gpt4 book ai didi

android - ListView 重复 Android

转载 作者:太空狗 更新时间:2023-10-29 15:53:35 25 4
gpt4 key购买 nike

当我从我的表格中获得搜索结果时,结果显示了两次。

Duplicate Results

结果“a/a”、“aa/aa”、“ab/a”都是正确的,应该是有的。但是,我不希望第三个 ListView 条目中有重复值。

知道为什么会这样吗?

主屏幕

// Set up search array
for(int i = 0; i < isbn.length; i++)
{
searchArray.add(new InventoryItem(isbn[i], InventoryAdapter.getTitleAndAuthorByISBN(isbn[i])));
}
Toast.makeText(getApplicationContext(), "searchArray.size()="+searchArray.size(), Toast.LENGTH_LONG).show();

// add data in custom adapter
adapter = new CustomAdapter(this, R.layout.list, searchArray);
ListView dataList = (ListView) findViewById(R.id.list);
dataList.setAdapter(adapter);

自定义适配器

public class CustomAdapter extends ArrayAdapter<InventoryItem> {
Context context;
int layoutResourceId;
LinearLayout linearMain;
ArrayList<InventoryItem> data = new ArrayList<InventoryItem>();

public CustomAdapter(Context context, int layoutResourceId,
ArrayList<InventoryItem> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}

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

if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
linearMain = (LinearLayout) row.findViewById(R.id.lineraMain);
}

InventoryItem myItem = data.get(position);
TextView label = new TextView(context);
label.setText(myItem.details);
linearMain.addView(label);

return row;

}
}

最佳答案

嗯,问题出在您的 getView(int position, View convertView, ViewGroup parent) 方法中,因为您一直在向 listview 为您提供的先前回收 View 添加 View 。您应该在创建 View 时对其进行扩充,而不是动态创建 TextView 。

例如,要解决这个问题:

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = null;

if (convertView == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
//Make sure the textview exists in this xml
} else {
row = convertView;
}

InventoryItem myItem = data.get(position);
TextView label = (Textview) row.findViewById(R.id.YOU_TEXT_VIEW_ID);
label.setText(myItem.details);

return row;

}

关于android - ListView 重复 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21053979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com