Android listview项目单击更改文本按钮

Android listview项目单击更改文本按钮,android,listview,onitemclicklistener,Android,Listview,Onitemclicklistener,我在做这个android项目时遇到了问题。你能帮我解决这个问题吗?我想更改按钮的文本 这是我的CustomerAdapter: @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater mInflater = (LayoutInflater) context .getSystemService(A

我在做这个android项目时遇到了问题。你能帮我解决这个问题吗?我想更改按钮的文本

这是我的CustomerAdapter:

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

        LayoutInflater mInflater = (LayoutInflater) context
            .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

        if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_item, null);
        holder = new ViewHolder();

        holder.member_name = (TextView) convertView
                .findViewById(R.id.member_name);
        holder.product_icons = (ImageView) convertView
                .findViewById(R.id.product_icons);
        holder.status = (TextView) convertView.findViewById(R.id.status);
        holder.addtocart = (Button) convertView
                .findViewById(R.id.btnaddtocart);

        convertView.setTag(holder);

        RowItem row_pos = rowItems.get(position);

        holder.product_icons.setImageResource(row_pos.getProfile_pic_id());
        holder.member_name.setText(row_pos.getMember_name());
        holder.status.setText("P" + row_pos.getStatus());
        holder.addtocart.setText(" add to cart");


       } else {

           holder = (ViewHolder) convertView.getTag();

       }

        return convertView;
以下是我的MainActivity.java代码,其中包含McClick listerner

       public void onItemClick(AdapterView<?> parent, View view, int position,
       long id) {

    RowItem item = rowItems.get(position);
    String member_name = item.getMember_name();
       int product_icons = item.getProfile_pic_id();
      String status = item.getStatus();

     Button cart= (Button) view.findViewById(R.id.btnaddtocart);
     cart.setText("Added to cart");


   }
public void onItemClick(AdapterView父视图、视图、int位置、,
长id){
RowItem=rowItems.get(位置);
String member_name=item.getMember_name();
int product_icons=item.getProfile_pic_id();
字符串状态=item.getStatus();
按钮购物车=(按钮)视图.findViewById(R.id.btnaddtocart);
cart.setText(“添加到购物车”);
}

仅当单击的项的索引为0(位于列表/网格视图中的第一项下方)时,switch语句才会设置文本。单击任何其他项目都不会对您的文本视图产生任何影响。如果您只想在单击某个内容时设置文本,请将switch语句替换为just cart.setText(“Hello”)。

让我来解决您的问题

1:单击listview项目时要更改的get按钮

ans:按钮响应单击事件。。因此,如果将其放在listview中,它会从listview中获取click事件。。所以要克服它 制造

再加上这个

android:descendantFocusability="beforeDescendants" 
在列表视图中。。它使listview在其子项之前接收焦点。。现在转到单击事件这是代码的编辑版本

public void onItemClick(AdapterView<?> parent, View view, int position,
    long id) {

   RowItem item = rowItems.get(position);
   String member_name = item.getMember_name();
   int product_icons = item.getProfile_pic_id();
   String status = item.getStatus();

   Button cart= (Button) view.findViewById(R.id.btnaddtocart);
   cart.setText("Added to cart");
   Toast.makeText(this.getApplicationContext(),"Added to Cart: " + member_name, Toast.LENGTH_SHORT).show();

}
因为它会重新设置适配器,而您不会看到按钮被设置 而且它也会使它变得清新..哈哈。。所以这是我的投球,试试看,让我知道它是否有效 此外,如果您向listview添加项目或删除项目,并且希望将其显示给用户 您不需要重新设置适配器,只需调用notifyDataSetChanged()方法即可

EIDT 2:关于禁用该项目

 listview.setOnItemClickListener(new OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                        // TODO Auto-generated method stub
                        if(cart.getText().equals("Added to cart")){ //checking the text of button
                          arg1.setFocusable(false);
                          arg1.setFocusableInTouchMode(false);
                          arg1.setAlpha((float)0.2);// i dont trust this line-(it works) but i want to give you the idea, there are soo many ways of making a view transparent.
                        }

                    }
listview.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
//TODO自动生成的方法存根
if(cart.getText().equals(“添加到购物车”){//检查按钮的文本
arg1.setFocusable(假);
arg1.setFocusableInTouchMode(false);
arg1.setAlpha((float)0.2);//我不相信这一行-(它可以工作),但我想告诉你,有很多方法可以使视图透明。
}
}
这会使单击的事件不响应焦点,并将其设置为透明。但是,如果您只想让按钮不响应单击事件,请将Enabled设置为false,并将焦点设置为false。在按钮“cart”上。我用记事本编写了它,因此请检查代码的正确性或任何编码愚蠢


happy codes

您的代码最初会发生什么,兄弟?如果您想更改文本,那么在初始化后直接设置文本&为什么要切换?我该怎么做?我想实现的是,当我单击列表视图上的特定项目时,我想在单击按钮后更改其文本。我想添加其他问题。我想更改“我的”按钮的文本后,请查看并禁用项目单击位置。非常感谢。禁用列表视图或按钮的项目单击???@paulbuscano或禁用响应单击事件的特定项目?如果我单击3个项目,则3个文本更改为“添加到购物车”。我想禁用单击事件。检查我的编辑。。基本上,你要检查按钮上的文本,以及它是否与你想禁用的文本一致,或者什么都不做。。因此,我给你的编辑应该是onitemclick侦听器中的第一行代码,你所做的应该在“其他”选项中下拉得到???@paulbuscano
newadapter = new CustomAdapter(this, rowItems);
mylistview.setAdapter(newadapter);
newadapter.notifyDataSetChanged();
 listview.setOnItemClickListener(new OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                        // TODO Auto-generated method stub
                        if(cart.getText().equals("Added to cart")){ //checking the text of button
                          arg1.setFocusable(false);
                          arg1.setFocusableInTouchMode(false);
                          arg1.setAlpha((float)0.2);// i dont trust this line-(it works) but i want to give you the idea, there are soo many ways of making a view transparent.
                        }

                    }