0

我来自巴西,我有一个包含按钮图像和文本的列表视图。我正在尝试单击按钮列表视图并获取负责我单击的行的视图。所以我可以在我的按钮所在的行上进行更改。

发生了什么,如果下面的代码,当我单击按钮时,无论列表中的哪个按钮,他总是在第一个列表项中进行更改,我希望他在各自的行中做。因此这个列表

图像 ------------ --------------- 文本 -- 按钮
图像 ------------ ----- ---------- 文本 -- 按钮
图像 ------------ --------------- 文本 -- 按钮
图像 --- --------- --------------- 文本 -- 按钮

我单击按钮,他只是更改了他的行示例的文本:

图像 ------------ --------------- 文本 -- 按钮
图像 ------------ ----- ---------更改 -- 按钮 <--单击的
图像 ------------ --------------- 文本 -- 按钮
图像------------ --------------- 文本 -- 按钮

和..

图像 ------------ --------------- 文本 -- 按钮
图像 ------------ ----- ---------- 文本 -- 按钮
图像 ------------ --------------- 文本 -- 按钮
图像 --- --------- --------------更改 -- 按钮 <--点击

回想起来并在片段列表中使用了一个适配器对不起,我的英语不好!

public class JAdapterList extends BaseAdapter  implements OnClickListener {

    private LayoutInflater mInflater;
    private ArrayList<JItemList> itens;

    public JAdapterList(Context context, ArrayList<JItemList> itens) {
        //Itens que preencheram o listview
        this.itens = itens;
        //responsavel por pegar o Layout do item.
        mInflater = LayoutInflater.from(context);
    }

    public int getCount() {
        return itens.size();
    }

    public JItemList getItem(int position) {
        return itens.get(position);
    }

        public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View view, ViewGroup parent) {
        //Pega o item de acordo com a posção.
        JItemList item = itens.get(position);
        //infla o layout para podermos preencher os dados

        view = mInflater.inflate(R.layout.navlistitem, null);

        ((TextView) view.findViewById(R.id.textListView)).setText(item.getNome());


        ImageButton ib = (ImageButton) view.findViewById(R.id.imageButton1);
        ib.setOnClickListener(this);

        return view;
    }

    @Override
    public void onClick(View v) {

        // TODO Auto-generated method stub


    View vv = v.getRootView();


    ImageView tv = (ImageView) vv.findViewById(R.id.imageView1);
    TextView texto = (TextView) vv.findViewById(R.id.textListView4);
    texto.setText("CHANGE");
    tv.setAnimation(AnimationUtils.loadAnimation(tv.getContext(), R.anim.motion));




    }
}
4

2 回答 2

5

您可以将文本视图设置为按钮的标记,这样会更容易。像这样:在getView中:

TextView textView = ((TextView)  view.findViewById(R.id.textListView)).setText(item.getNome());


    ImageButton ib = (ImageButton) view.findViewById(R.id.imageButton1);
    ib.setOnClickListener(this);
     ib.setTag(textView);

在 onClickListener 中:

 public void onClick(View v) {
    TextView texto = (TextView) v.getTag();
    texto.setText("CHANGE");
  }
于 2013-01-28T21:34:47.507 回答
0

例如对于一个复选框(其余视图相同): View viewParent = (View)checkBox.getParent();

但是您想做的可能会更容易,请查看此帖子: OnItemClick listener not working in Custom ListView

祝你好运 :)

于 2013-01-28T21:02:34.850 回答