改变listivew的项目的形象永久 [英] change image of listivew's item permanently
问题描述
我试图改变ListView的项目的形象,如果用户选择该项目,它的形象改变永久与我的code。但是当其他项目用户点击previously只改变一个项目改变项目得到改变默认,新选定的项目得到改变,因此on.how永久进行更改??
MainActivity
列表< RowItem> rowItems;
私人BaseClass的适配器; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
Singleton.populate =新的ArrayList< Singleton.ProfileBean>();
的setContentView(R.layout.fragment_main); lay1 =(的LinearLayout)findViewById(R.id.lay1);
lay2 =(的LinearLayout)findViewById(R.id.lay2); lay2.setVisibility(View.VISIBLE);
IMG = R.drawable.praying_hands_normal; rowItems =新的ArrayList< RowItem>();
的for(int i = 0; I< 50;我++){
RowItem项目=新RowItem(迪亚斯[I],祈祷[I],IMG);
rowItems.add(项目);
} ListView控件=(ListView控件)findViewById(R.id.listview); 适配器=新BaseClass的(这一点,rowItems);
listView.setAdapter(适配器);
listView.setOnItemClickListener(新AdapterView.OnItemClickListener(){ @覆盖
公共无效onItemClick(适配器视图<>母公司,观景,
INT位置,长的id){
// TODO自动生成方法存根 POS =位置; 意图I =新意图(MainActivity.this,OpenActivity.class);
startActivity(ⅰ); }
}); }
的BaseClass
公共类BaseClass的延伸BaseAdapter {
上下文语境;
清单< RowItem> rowItems; / *私有视图holder类* /
公共类ViewHolder {
公共ImageView的ImageView的;
公众的TextView txtDias;
公众的TextView txtPrayers; } 公众的BaseClass(上下文的背景下,列表与LT; RowItem> rowItems){
// TODO自动生成构造函数存根
this.context =背景;
this.rowItems = rowItems;
} 公共查看getView(INT位置,查看convertView,父母的ViewGroup){
ViewHolder支架=无效; LayoutInflater mInflater =(LayoutInflater)上下文
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
如果(convertView == NULL){
convertView = mInflater.inflate(R.layout.list,NULL);
持有人=新ViewHolder(); holder.txtDias =(TextView中)convertView.findViewById(R.id.dias);
holder.txtPrayers =(TextView中)convertView
.findViewById(R.id.prayers);
holder.imageView =(ImageView的)convertView
.findViewById(R.id.symbol);
convertView.setTag(保持器);
}其他{
支架=(ViewHolder)convertView.getTag();
} RowItem rowItem =(RowItem)的getItem(位置); holder.txtPrayers.setText(rowItem.getDesc());
holder.txtDias.setText(rowItem.getTitle());
holder.imageView.setImageResource(R.drawable.praying_hands_normal);
如果(POS ==位置和放大器;&安培; OpenActivity.a + OpenActivity.b +
OpenActivity.c == 1 || OpenActivity.a + OpenActivity.b +
OpenActivity.c == 2)
{
holder.imageView.setImageResource(R.drawable.praying_hands_bookmark); } 否则,如果(POS ==位置和放大器;&安培; OpenActivity.a + OpenActivity.b +
OpenActivity.c == 3)
{
holder.imageView.setImageResource(R.drawable.praying_hands_selected);
}
返回convertView; }
OpenActivity
公共类OpenActivity扩展活动实现OnClickListener {
按钮BTN1,BTN2,btn3;
公共静态int类型的= 0,B = 0,C = 0;
OpenActivity实例;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.openactivity); BTN1 =(按钮)findViewById(R.id.button1);
BTN2 =(按钮)findViewById(R.id.button2);
btn3 =(按钮)findViewById(R.id.button3);
btn1.setOnClickListener(本);
btn2.setOnClickListener(本);
btn3.setOnClickListener(本);
} @覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根
如果(V == BTN1){
意图I =新意图(这一点,DFamily.class);
startActivity(ⅰ);
一个= 1; Toast.makeText(getApplication(),BTN,Toast.LENGTH_SHORT).show(); }否则如果(V == BTN2){
意图=新的意图(这一点,DIndividual.class);
startActivity(一);
B = 1;
Toast.makeText(getApplication(),将String.valueOf(b)中,Toast.LENGTH_SHORT).show();
}否则如果(V == btn3){
意向X =新意图(这一点,DGroup.class);
startActivity(X);
C = 1;
Toast.makeText(getApplication(),BTN2,Toast.LENGTH_SHORT).show();
} }
我想你需要一个新的适配器。这来自一个源项目,这样你可以设置所使用的商品图像的setimage()方法。这样,它不是一个ListViewItem,获取更新了项目本身。你明白吗?
i am trying to change the image of the listview's item,if user select the item,its image change permanently .but with my code only single item is changed when user click on other item the previously changed item get changed to default and new selected item get change and so on.how to make this change permanently..??
MainActivity
List<RowItem> rowItems;
private BaseClass adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Singleton.populate = new ArrayList<Singleton.ProfileBean>();
setContentView(R.layout.fragment_main);
lay1 = (LinearLayout) findViewById(R.id.lay1);
lay2 = (LinearLayout) findViewById(R.id.lay2);
lay2.setVisibility(View.VISIBLE);
img = R.drawable.praying_hands_normal;
rowItems = new ArrayList<RowItem>();
for (int i = 0; i < 50; i++) {
RowItem item = new RowItem(Dias[i], Prayers[i], img);
rowItems.add(item);
}
listView = (ListView) findViewById(R.id.listview);
adapter = new BaseClass(this, rowItems);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
pos = position;
Intent i = new Intent(MainActivity.this, OpenActivity.class);
startActivity(i);
}
});
}
BaseClass
public class BaseClass extends BaseAdapter {
Context context;
List<RowItem> rowItems;
/* private view holder class */
public class ViewHolder {
public ImageView imageView;
public TextView txtDias;
public TextView txtPrayers;
}
public BaseClass( Context context,List<RowItem> rowItems) {
// TODO Auto-generated constructor stub
this.context = context;
this.rowItems = rowItems;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list, null);
holder = new ViewHolder();
holder.txtDias = (TextView) convertView.findViewById(R.id.dias);
holder.txtPrayers = (TextView) convertView
.findViewById(R.id.prayers);
holder.imageView = (ImageView) convertView
.findViewById(R.id.symbol);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
RowItem rowItem = (RowItem) getItem(position);
holder.txtPrayers.setText(rowItem.getDesc());
holder.txtDias.setText(rowItem.getTitle());
holder.imageView.setImageResource(R.drawable.praying_hands_normal);
if(pos == position && OpenActivity.a + OpenActivity.b +
OpenActivity.c == 1 || OpenActivity.a + OpenActivity.b +
OpenActivity.c == 2)
{
holder.imageView.setImageResource(R.drawable.praying_hands_bookmark);
}
else if(pos == position && OpenActivity.a + OpenActivity.b +
OpenActivity.c == 3 )
{
holder.imageView.setImageResource(R.drawable.praying_hands_selected);
}
return convertView;
}
OpenActivity
public class OpenActivity extends Activity implements OnClickListener {
Button btn1, btn2, btn3;
public static int a= 0,b=0,c=0;
OpenActivity Instance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.openactivity);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn3 = (Button) findViewById(R.id.button3);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v == btn1) {
Intent i = new Intent(this, DFamily.class);
startActivity(i);
a =1;
Toast.makeText(getApplication(), "BTN", Toast.LENGTH_SHORT).show();
} else if (v == btn2) {
Intent a = new Intent(this, DIndividual.class);
startActivity(a);
b =1;
Toast.makeText(getApplication(), String.valueOf(b), Toast.LENGTH_SHORT).show();
} else if (v == btn3) {
Intent x = new Intent(this, DGroup.class);
startActivity(x);
c =1;
Toast.makeText(getApplication(), "BTN2", Toast.LENGTH_SHORT).show();
}
}
I think you need a new adapter. Items that come from a source, that way you can set that items image using a setimage() method. That way its not the listviewitem that gets updated its the item itself. Do you understand?
这篇关于改变listivew的项目的形象永久的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!