更新: 我已決定使用ExpandableListAdapter來完成此操作...因爲此代碼幾乎是有效地嘗試工程師可擴展的listadapter已經做了什麼。如何讓ListView在單擊onClickListener後正確顯示?
爲了讓ListView的簡單工作我使用ViewHolder的標準模式......
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
if(convertView == null){
vi = inflater.inflate(R.layout.item, null);
holder=new ViewHolder();
holder.text=(TextView)vi.findViewById(R.id.text);
holder.image=(ImageView)vi.findViewById(R.id.image);
holder.expandButton=(ImageView)vi.findViewById(R.id.expand_button);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
However....I believe that inside of my onClickListener...something is going wrong.
final String textData = texts[position];
final ViewHolder holderFinal = holder;
holder.expandButton.setVisibility(View.VISIBLE);
holder.expandButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v) {
holderFinal.expandButton.setImageResource(R.drawable.expander_ic_maximized);
holderFinal.text.setText(textData);
So, everything displays fine when scrolling back and forth....however, whenever one of the listitems is expanded, the final line above contains a textData that belongs to another row. How do I get the correct textData to work INSIDE the onCLick listener?
你的第一個代碼塊中的'else'子句肯定會得到convertView.getTag(),而不是vi.getTag()。它現在是 – 2011-01-21 19:07:12
,現在顯示了更多的代碼。 – hunterp 2011-01-21 19:31:50