listview的自定义布局在自定义布局内添加OnClickListener

时间:2013-06-17 21:12:29

标签: android android-layout android-listview

我有一个列表视图来显示我的自定义布局 在自定义布局我有一个RatingBar或任何想法,想要设置一个动作他们!
如何在自定义布局中将OnClickListener添加到我的RatingBar 我在主要活动中设置了listview适配器。

adapter = new ListviewBooksList(this, bookList);
lstBook.setAdapter(adapter);

工作并查看信息,但我不明白如何在自定义布局里面添加OnClickListener到我的RatingBar!

public class ListviewBooksList extends BaseAdapter {
static final String KEY_NAME = "bookName";
static final String KEY_FAV = "fav";
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;    
public ListviewBooksList(Activity a, ArrayList<HashMap<String, String>> d) {
    activity = a;
    data = d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
    return data.size();
}
public HashMap<String, String> getItem(int position) {

    HashMap<String, String> nameList = new HashMap<String, String>();
    nameList = data.get(position);
    return nameList;
}
public long getItemId(int position) {
    return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.listview_books, null);
    TextView bookName = (TextView)vi.findViewById(R.id.listveiw_books_name);
    RatingBar fav = (RatingBar)vi.findViewById(R.id.star_fav_books);
    nameList = data.get(position);
    bookName.setText(nameList.get(KEY_NAME));
    fav.setRating(Float.valueOf(nameList.get(KEY_FAV)));
    return vi;
}

}

1 个答案:

答案 0 :(得分:0)

当你为列表项生成视图时,你只需要在getView()方法中将监听器添加到RatingBar。

public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.listview_books, null);
    TextView bookName = (TextView)vi.findViewById(R.id.listveiw_books_name);
    RatingBar fav = (RatingBar)vi.findViewById(R.id.star_fav_books);
    nameList = data.get(position);
    bookName.setText(nameList.get(KEY_NAME));
    fav.setRating(Float.valueOf(nameList.get(KEY_FAV)));

    fav.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {   
        public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
            // action to perform when event is triggered            
        }     
    });

    return vi;
}