2015-10-14 96 views
1

我的问题很简单:我有一个定义适配器,设置图像在ListView:Android的ListView控件定义适配器

package com.tred.stars; 

import android.app.Activity; 
import android.content.ClipData; 
import android.content.Context; 
import android.graphics.Color; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.Toast; 

public class CustomListAdapter extends ArrayAdapter<String> { 

public static String selected_pers= "Graziana Grasso"; 
Activity context; 
String[] itemname; 
Integer[] imgid; 


public CustomListAdapter(Activity context, String[] itemname, Integer[] imgid) { 
    super(context, R.layout.mylist, itemname); 
    // TODO Auto-generated constructor stub 

    this.context=context; 
    this.itemname=itemname; 
    this.imgid=imgid; 

} 




public View getView(int position,View view,ViewGroup parent) { 

    String[] description ={ 
      "desc", 
      "desc", 
      "desc", 
      "desc", 
      "desc", 
      "desc", 
      "desc", 
      "desc" 
    }; 

    LayoutInflater inflater=context.getLayoutInflater(); 
    View rowView=inflater.inflate(R.layout.mylist, null, true); 

    TextView txtTitle = (TextView) rowView.findViewById(R.id.pers_name); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.pers_image); 
    TextView extratxt = (TextView) rowView.findViewById(R.id.pers_comment); 
    LinearLayout llrow = (LinearLayout) rowView.findViewById(R.id.row); 
    Toast.makeText(getContext(), selected_pers, Toast.LENGTH_SHORT).show(); 

    if (getItem(position).toString()==selected_pers){ 
     llrow.setBackgroundColor(Color.parseColor("#29A3CC")); 
    } 

    txtTitle.setText(itemname[position]); 
    imageView.setImageResource(imgid[position]); 
    extratxt.setText(description[position]); 
    return rowView; 

}; 

}

而且在我的活动我的适配器设置为我的列表视图:

DrawerListView = (ListView) findViewById(R.id.drawerLW); 
    CustomListAdapter adapter = new CustomListAdapter(this, itemname, imgid); 
    DrawerListView.setAdapter(adapter); 

但是当我运行在CustomListAdaper方法getView似乎不间断的重演应用和可变selected_pers似乎是空的。

+0

哪条线路故障?像哪个selected_pers为null – Keith

+0

getView将被多次调用。没关系。 http://stackoverflow.com/questions/11648995/view-is-getting-inflated-everytime-in-getview-findviewbyid-is-done-many-ti – Raghunandan

+0

尝试像这样'itemname [position] .toString()== selected_pers' – pRaNaY

回答

1

改变这一行:

mInflater.inflate(R.layout.mylist, null, true); 

要:

mInflater.inflate(R.layout.mylist, parent, false); 

而且比较字符串时不能使用==。改变这一行:

if (getItem(position).toString()==selected_pers) 

要:

if (getItem(position).toString().equals(selected_pers)) 

而且,看看this example学习如何实现正确&高效的ListView。