【发布时间】:2016-04-08 12:15:33
【问题描述】:
我尝试按照本教程创建多列列表视图:
http://techlovejump.com/android-multicolumn-listview/.
问题出现了,当记录的数量如此之大以至于整个视图超过了手机的屏幕时。现在,当我滚动时,其中一行中的所有记录都在更改(它们的值已更改)。所有其他行都很好。可能是什么问题?
public class ListViewAdapters extends BaseAdapter{
public ArrayList<HashMap<String, String>> list;
Activity activity;
TextView txtFirst;
TextView txtSecond;
TextView txtFourth;
public ListViewAdapters(Activity activity, ArrayList<HashMap<String, String>> list){
super();
this.activity=activity;
this.list=list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
HashMap<String, String> map=list.get(position);
LayoutInflater inflater=activity.getLayoutInflater();
if(convertView == null)
{
if(map.get(MARKED)=="no")
{
convertView=inflater.inflate(R.layout.colmn_row, null);
}
else if (map.get(MARKED)=="yes")
{
convertView=inflater.inflate(R.layout.colmn_row_clicked, null);
}
txtFirst=(TextView) convertView.findViewById(R.id.name);
txtSecond=(TextView) convertView.findViewById(R.id.gender);
txtFourth=(TextView) convertView.findViewById(R.id.status);
}
txtFirst.setText(map.get(FIRST_COLUMN));
txtSecond.setText(map.get(SECOND_COLUMN));
txtFourth.setText(map.get(FOURTH_COLUMN));
return convertView;
}
}
【问题讨论】:
-
行正在改变..意味着项目位置是否改变了?
-
他们的值被改变了。
-
尝试使用
Holder并覆盖 BaseAdapter 的getItemViewType()和getViewTypeCount()方法 -
例如,我希望记录为“abc”,滚动时切换为“def”。当我滚动更多时,它是“ghj”等。
-
从答案中尝试代码,让我知道。
标签: android listview baseadapter