如何更改android中所选列表项的背景
可能重复:如何更改android中所选列表项的背景,android,android-listview,Android,Android Listview,可能重复: 在设置屏幕的android平板电脑中,列表项的背景会发生变化,直到用户做出下一个选择,这是让该功能正常工作的标准方式。到目前为止,我对选中的项目使用了布尔值,每次单击后我都会刷新列表以反映更改,我不这么认为,这是正确的方法?您可以使用以下过程。它很好用。 You can use the following process . It works fine. Write a Global bean that get the postion of the selected ite
在设置屏幕的android平板电脑中,列表项的背景会发生变化,直到用户做出下一个选择,这是让该功能正常工作的标准方式。到目前为止,我对选中的项目使用了布尔值,每次单击后我都会刷新列表以反映更改,我不这么认为,这是正确的方法?
您可以使用以下过程。它很好用。
You can use the following process . It works fine.
Write a Global bean that get the postion of the selected item from the list.
public class Global {
public static int mListPosition = 0;
public static int getListPosition() {
return mListPosition;
}
public static void setListPosition(int mListPosition) {
Global.mListPosition = mListPosition;
}
}
from List onClickListener set the position into the global bean
mList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Global.setListPosition(arg2);
mAdapter.notifyDataSetChanged();
}
});
in the adapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) mCtx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.details_retailer_list_row, null);
mHolder = new ViewHolder();
v.setTag(mHolder);
mHolder.mDetailsRetailerLayout = (LinearLayout) v.findViewById(R.id.details_cart_retailer_row_layout);
mHolder.mDetailsRetailer = (TextView) v.findViewById(R.id.detailsRetailerRow);
}
else {
mHolder = (ViewHolder) v.getTag();
}
final CartDetailsRetailerBean mDetailsRetailerBean = mItems.get(position);
if (position == Global.getListPosition()) {
mHolder.mDetailsRetailerLayout
.setBackgroundResource(R.drawable.row_white);
} else {
mHolder.mDetailsRetailerLayout
.setBackgroundResource(R.drawable.row_red);
}
if(mDetailsRetailerBean != null){
Log.i("Global Position", ""+Global.getListPosition());
mHolder.mDetailsRetailer.setText(mDetailsRetailerBean.getRetailerName());
}
return v;
}
class ViewHolder {
public LinearLayout mDetailsRetailerLayout;
public TextView mDetailsRetailer;
}
Please apply it . I think it will work fine.
编写一个全局bean,从列表中获取所选项目的位置。
公共类全局{
公共静态int mListPosition=0;
公共静态int getListPosition(){
返回位置;
}
公共静态无效setListPosition(int-mListPosition){
Global.mListPosition=mListPosition;
}
}
从列表onClickListener将位置设置为全局bean
mList.setOnItemClickListener(新的OnItemClickListener(){
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
Global.setListPosition(arg2);
mAdapter.notifyDataSetChanged();
}
});
在适配器中
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutInflater vi=(LayoutInflater)mCtx.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=vi.充气(R.布局.详细信息\零售商\列表\行,空);
mHolder=新的ViewHolder();
v、 setTag(mHolder);
mHolder.mdetailsretaillayout=(LinearLayout)v.findViewById(R.id.details\u cart\u retailer\u row\u布局);
mHolder.mDetailsRetailer=(TextView)v.findViewById(R.id.detailsRetailerRow);
}
否则{
mHolder=(ViewHolder)v.getTag();
}
最终CartDetailsRetailerBean mDetailsRetailerBean=mItems.get(位置);
if(position==Global.getListPosition()){
mHolder.mdetailsretaillayout
.setBackgroundResource(R.drawable.row_white);
}否则{
mHolder.mdetailsretaillayout
.setBackgroundResource(R.drawable.row_red);
}
if(mDetailsRetailerBean!=null){
Log.i(“全局位置”,“Global.getListPosition());
mHolder.mDetailsRetailer.setText(mdetailsretailrbean.getRetailerName());
}
返回v;
}
类视图持有者{
公共线路布局MDetailsRetailLayout;
公共文本视图mDetailsRetailer;
}
请使用它。我想它会很好用的。
您可以使用以下过程。它很好用。
编写一个全局bean,从列表中获取所选项目的位置。
公共类全局{
公共静态int mListPosition=0;
公共静态int getListPosition(){
返回位置;
}
公共静态无效setListPosition(int-mListPosition){
Global.mListPosition=mListPosition;
}
}
从列表onClickListener将位置设置为全局bean
mList.setOnItemClickListener(新的OnItemClickListener(){
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
Global.setListPosition(arg2);
mAdapter.notifyDataSetChanged();
}
});
在适配器中
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutInflater vi=(LayoutInflater)mCtx.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=vi.充气(R.布局.详细信息\零售商\列表\行,空);
mHolder=新的ViewHolder();
v、 setTag(mHolder);
mHolder.mdetailsretaillayout=(LinearLayout)v.findViewById(R.id.details\u cart\u retailer\u row\u布局);
mHolder.mDetailsRetailer=(TextView)v.findViewById(R.id.detailsRetailerRow);
}
否则{
mHolder=(ViewHolder)v.getTag();
}
最终CartDetailsRetailerBean mDetailsRetailerBean=mItems.get(位置);
if(position==Global.getListPosition()){
mHolder.mdetailsretaillayout
.setBackgroundResource(R.drawable.row_white);
}否则{
mHolder.mdetailsretaillayout
.setBackgroundResource(R.drawable.row_red);
}
if(mDetailsRetailerBean!=null){
Log.i(“全局位置”,“Global.getListPosition());
mHolder.mDetailsRetailer.setText(mdetailsretailrbean.getRetailerName());
}
返回v;
}
类视图持有者{
公共线路布局MDetailsRetailLayout;
公共文本视图mDetailsRetailer;
}
请使用它。我想它会很好用的。
答案似乎是合适的,它是列表的正常选择器,一旦用户选择,背景会改变为按钮,我想要一个复选框,你是否明白我想说的是。您需要使用单选列表视图类型和选择器。请勾选此链接。这可能有助于答案似乎是合适的,这是列表的正常选择器,一旦用户选择,背景将更改为按钮,我想要一个类似于复选框的东西,您是否明白我想说的是。您需要使用单选列表视图类型和选择器。请选中此链接,它可能会有所帮助,谢谢。。即使是简单的事情有时也比