테이블에서 검색 결과를 얻으면 결과가 두 번 표시됩니다.ListView 중복 Android
결과의 "/ A", "AA/AA"및 "AB가 /"모두 정확하고있을 것이다. 그러나, 나는 세 번째 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);
CustomAdapter
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;
}
}
에서 좀 걸릴 수 있습니다. 감사. – erad
어떻게이 기능을 사용할 수 있습니까? 'convertView = row' 또는'convertView.setTag (row)'는 없습니다. – Siddharth
View 행이 포인터로 사용되기 때문에 작동합니다. convertView와 행이 모두 같은 Object를 참조하게됩니다. 당신은 모든 정직에서 View row = null, else 문을 취할 수 있으며 모든 "row"변수를 convertView로 바꾸면 동일하게 작동합니다. 나는이 답변을 얼마 전 게시했는데 위의 내용은 당시 내가 결정한 것입니다. 또한 위의 예제에서는 뷰에 태그를 설정할 필요가 없습니다. – Submersed