3

可能重复:
在 Listview 问题的每一行中处理按钮事件

我正在开发一个安卓应用程序。我应该在 ListView 的每一行中添加一个按钮,当我单击任何按钮时,我需要删除该按钮。但是,当我这样做时,按钮被删除,但其他位置的一些其他按钮也被删除。此外,当我向下和向上滚动 ListView 时,我单击并删除的这些按钮再次出现在列表中。你能告诉我一个确切的解决方案或一段完整的代码吗?谢谢...

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

        if(convertView == null){
            // LayoutInflater class is used to instantiate layout XML file into its corresponding View objects.
            LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.listxml, null);
        }


        rawTextView = (TextView) convertView.findViewById(R.id.textView1);
        rawTextView.setText("Text "+innerClassBookArray[position]);

        final LinearLayout lnr=(LinearLayout)convertView.findViewById(R.id.layoutforbtn);

         final Button btn = new Button(getBaseContext()); 
            btn.setText("MyButton"); 
            btn.setId(position);
            lnr.addView(btn); 

           btn.setOnClickListener(myOnBtnClickListener);

        return convertView;
    }   
      private OnClickListener myOnBtnClickListener = new OnClickListener() {
            @Override
            public void onClick(View v) {
                final int posit = bookListView.getPositionForView((View) v.getParent());
                Toast.makeText(getApplicationContext(), Integer.toString(posit), Toast.LENGTH_LONG).show();

            }
        };
4

3 回答 3

2

您可以这样做,创建一个数组列表,其中每个元素为“0”(Arraylist<String> my=new ArrayList<String>();Arraylist 的大小应根据列表视图中列的大小),然后单击按钮将“1”设置为 like 的位置, my.set(position,"1");然后通知列表视图。还可以查看以下代码中的条件,例如

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

            if(convertView == null){
                // LayoutInflater class is used to instantiate layout XML file into its corresponding View objects.
                LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
                convertView = layoutInflater.inflate(R.layout.listxml, null);
            }


            rawTextView = (TextView) convertView.findViewById(R.id.textView1);
            rawTextView.setText("Text "+innerClassBookArray[position]);
  Button button =(Button)findViewById(R.id.yourid);

      if(my.get(position).equals("1")){
    button.setVisiblity(View.INVISIBLE);
    }
            final LinearLayout lnr=(LinearLayout)convertView.findViewById(R.id.layoutforbtn);


               btn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {

    my.set(position,"1");
    ((BaseAdapter)yourActivity.this.lv.getAdapter()).notifyDataSetChanged();
                }
            });


            return convertView;
        }   
I think this will definitely help you any question ask me     
于 2012-07-09T10:21:17.483 回答
1

这个例子帮助我解决这个问题:D

于 2012-07-09T08:17:49.997 回答
1

是为您提供的简单而漂亮的教程。在此代码中,当点击事件时尝试隐藏按钮

Btn01.setOnClickListener(new OnClickListener(){

 public void onClick(View v) {

//Toast.makeText(SearchUser.this, "Button 1 "+listview_arr[position], Toast.LENGTH_SHORT).show();
Btn01.setvisibility(view.Gone);
}
});

像这样试试。希望它对你有帮助。祝你好运

于 2012-07-09T08:26:37.230 回答