2014-07-03 100 views
0

對不起Redundent數據再次問這個問題,但我不再次獲得前一個問題所以srry任何解決方案 我是獲得重複數據,而我建立和模擬器 運行該項目,這裏是我的代碼列表視圖顯示在Android的

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; 
} 

} 

請幫助我,我無法理解Ÿ其表現的重複數據提前 謝謝!!!!! 1個

+0

在'return'之前將'RowCode'和'holder。*。setText()'行移到'if-else'塊的後面。 –

+0

不是問題帕里斯.. –

+0

謝謝邁克我得到它現在沒有redundent數據:) – Paresh

回答

0
@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; 
    } 

希望其工作

+0

邁克回答我早,然後你和你有它複製回答 – Paresh

+0

@Paresh請再次檢查,你會發現..我已經把RowCode row_pos = rowItems.get(position);如果其他條件在外線。 –

+0

你不能放RowCode row_pos = rowItems.get(position);行內如果條件..因爲當條件成爲假,那麼你會得到重複的數據................................. ........先前分配的數據。 –

0

公共類CustomAdapter延伸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); 



     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
     holder.member_name.setText(row_pos.getMember_name()); 
     holder.contactType.setText(row_pos.getContactType()); 
    return convertView; 
} 

}