Android listview项目单击更改文本按钮
我在做这个android项目时遇到了问题。你能帮我解决这个问题吗?我想更改按钮的文本 这是我的CustomerAdapter: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
@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.
}
}