在我的活动中传播自定义arrayadapter的按钮

时间:2011-07-07 17:17:05

标签: android listview android-arrayadapter

我的活动有一个ListView,它有一个自定义的ArrayAdapter。 在我的ArrayAdapter上,我有一个图像,一堆文本框和一个按钮。

在适配器的getView上,我得到了我的按钮并设置了setOnClickListener。从点击监听器我可以得到被点击项目的索引。

现在我的问题是我想将这些信息传播到我的主要活动,我想要处理我的按钮点击。 我可以将索引信息保存在静态var中,但我仍然不知道如何在我的活动中触发事件。

我该怎么做?

我对Android新手已经6天了,谢谢 伊基

代码:

我的活动:

public class MyClass extends Activity{
...
    public void onCreate(Bundle savedInstanceState) {
    ...
    myListView = (ListView)findViewById(R.id.lvxml);
    myList = new MyCustomArrayAdapter(this, myAnotherClassObject);
    myListView .setAdapter(myList);
    ...
    }
}

现在在我的适配器

public class MyCustomArrayAdapter extends ArrayAdapter<myAnotherClass> {
...
....
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

         Button b = (Button)convertView.findViewById(R.id.myButtonInListView);
         b.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 doStuff;
             }
     });
    }
}

我需要以某种方式从我的主要活动中触发按钮,但不会失去阅读列表视图中单击的索引的可能性。

3 个答案:

答案 0 :(得分:0)

所以我以某种方式解决了它。它可能不是这样做的方法,但它有效。

我将活动保存在静态var。

Button b = (Button)convertView.findViewById(R.id.myButtonInListView);
b.setTag(position);
b.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             int i = (Integer) v.getTag();
             myStaticVarRep.myActivity.myMethod(i);
         }
 });

答案 1 :(得分:0)

索引是position变量。 我必须是最终在这里使用它

  

public View getView(final int position,View convertView,ViewGroup parent)

您可以通过监听器界面通知您的Activity

答案 2 :(得分:-1)

我假设您的代码看起来有点像这样。

public class <Your Class> ... implements OnClickListener{

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        .
        .
        .
        button.setOnClickListener(this);
    }
}

要处理按钮点击事件,您需要一个看起来像这样的onClick方法。

public void onClick(View v){
    <Handle your button click in here>
}

每当您单击按钮时,它都会调用onClick方法。这是你操纵静态var,触发其他方法等的地方。我希望这有帮助。