如何根据位置设置列表视图按钮文本?

时间:2013-07-01 08:39:36

标签: android android-listview android-button

我有一个listview有20个项目。在列表视图的每一行中,都有一个Button。我想根据位置更改Button文本。

  1. 如果位置是2& 3,按钮文字将被“邀请”。
  2. 如果位置为5和8,则按钮文本将为“已发送”。
  3. 对于所有其他位置,按钮文字应为“邀请”。
  4. 奇怪的问题是当我滚动,文本被交换。

    按照我迄今为止所做的尝试,

    public class MyAdapter extends BaseAdapter {
    
        private Activity activity;
        private String[] data;
        private static LayoutInflater inflater=null;
        public ImageLoader imageLoader; 
    
        public MyAdapter(Activity a, String[] d) {
            activity = a;
            data=d;
            inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            imageLoader=new ImageLoader(activity.getApplicationContext());
        }
    
        public int getCount() {
            return data.length;
        }
    
        public Object getItem(int position) {
            return position;
        }
    
        public long getItemId(int position) {
            return position;
        }
    
        public View getView(int position, View convertView, ViewGroup parent) {
            View vi=convertView;
            if(convertView==null)
                vi = inflater.inflate(R.layout.item, null);
    
            Button text=(Button)vi.findViewById(R.id.text);;
            ImageView image=(ImageView)vi.findViewById(R.id.image);
            Log.i("POSITION:", ""+position);
            if(position==2 || position==3)
            text.setText("Invited");
            if(position==5 || position==8)
            {
                text.setText("Sent");
            }
    
            imageLoader.DisplayImage(data[position], image);
            return vi;
        }
    }
    

3 个答案:

答案 0 :(得分:0)

将逻辑更改为:

if (position==2 || position==3) {
    text.setText("Invited");
} 
else if (position==5 || position==8) {
    text.setText("Sent");
}
else {
    text.setText("Invite");
}

由于视图回收,没有后备“else”,您将在错误的行中得到错误的文本。

答案 1 :(得分:0)

 else
    {
        text.setText("Invite");
    }

之后

if(position==5 || position==8)

答案 2 :(得分:0)

sizes[1:]

// firstcolumn变量根据列表视图的位置存储第一列的值