Search code examples
javaandroidandroid-listviewandroid-listfragment

List View Showing Redundent data in android


Sorry For asking this question again but i dont get any solution in previous question so srry again i am get duplicates data while i build and run the project on emulator here is my code for

railcode.java

public class RailCode extends Activity implements OnItemClickListener {

String[] member_names;
String[] contactType;

List<RowCode> rowCode;
ListView mylistview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.railcode);

    rowCode = new ArrayList<RowCode>();

    member_names = getResources().getStringArray(R.array.member_names);


    contactType = getResources().getStringArray(R.array.contactType);

    for (int i = 0; i < member_names.length; i++) {
        RowCode code = new RowCode(member_names[i],contactType[i]);
        rowCode.add(code);
    }

    mylistview = (ListView) findViewById(R.id.list);
    CustomAdapter adapter = new CustomAdapter(this, rowCode);
    mylistview.setAdapter(adapter);
    mylistview.setOnItemClickListener(this);

}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
                        long id) {
    String member_name = rowCode.get(position).getMember_name();
    Toast.makeText(getApplicationContext(), "" + member_name,
            Toast.LENGTH_SHORT).show();
 }

}

CustonAdapter.java

public class CustomAdapter extends BaseAdapter {

Context context;
List<RowCode> rowItems;

public CustomAdapter(Context context, List<RowCode> rowItems) {
    this.context = context;
    this.rowItems = rowItems;
}

@Override
public int getCount() {
    return rowItems.size();
}

@Override
public Object getItem(int position) {
    return rowItems.get(position);
}

@Override
public long getItemId(int position) {
    return rowItems.indexOf(getItem(position));
}

/* private view holder class */
private class ViewHolder {
    TextView member_name;

    TextView contactType;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder = null;

    LayoutInflater mInflater = (LayoutInflater) context
            .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_code, null);
        holder = new ViewHolder();

        holder.member_name = (TextView) convertView
                .findViewById(R.id.member_name);
        holder.contactType = (TextView) convertView
                .findViewById(R.id.contact_type);

        RowCode row_pos = rowItems.get(position);

        holder.member_name.setText(row_pos.getMember_name());
        holder.contactType.setText(row_pos.getContactType());

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    return convertView;
}

}

Please help me i cannot understand y its showing duplicate data Thanks in advance !!!!!1


Solution

  •     @Override
        public View getView(int position, View convertView, ViewGroup parent) {
    
            ViewHolder holder = null;
    
            LayoutInflater mInflater = (LayoutInflater) context
                    .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.list_code, null);
                holder = new ViewHolder();
    
                holder.member_name = (TextView) convertView
                        .findViewById(R.id.member_name);
                holder.contactType = (TextView) convertView
                        .findViewById(R.id.contact_type);
    
    
    
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
    // put here ..... after else condition
                RowCode row_pos = rowItems.get(position);
    
                holder.member_name.setText(row_pos.getMember_name());
                holder.contactType.setText(row_pos.getContactType());
    
        return convertView;
        }
    

    Hope its worked