在自定义列表视图适配器中创建方法的正确方法

时间:2016-04-20 08:00:49

标签: java android

我创建了一个简单的android应用程序,其中包含ListView。我在下面有自定义列表适配器:

package com.example.android.efaas;

import java.util.List;

import com.example.android.R;
import com.example.android.efaas.bean.ListItem;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomListAdapter extends BaseAdapter {

    LayoutInflater inflater = null;
    Context ctx;
    List<ListItem> data;

    public CustomListAdapter(Activity activity, List<ListItem> data){
        ctx = activity;
        this.data = data;
        inflater = ( LayoutInflater )ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int pos) {
        return pos;
    }

    @Override
    public long getItemId(int pos) {
        return pos;
    }

    @Override
    public View getView(int pos, View view, ViewGroup vgroup) {
        View rowView = inflater.inflate(R.layout.list_menu, null);
        ImageView img = (ImageView) rowView.findViewById(R.id.list_menu_image);
        TextView title = (TextView) rowView.findViewById(R.id.list_menu_title);

        ListItem item = data.get(pos);
        img.setImageResource(item.getId());
        title.setText(item.getTitle());

        return rowView;
    }

    public ListItem getListItem(int pos){
        return data.get(pos);
    }

}

我有一个公共方法getListItem,我试图在ListView onClick期间调用它但不知何故我似乎无法使它工作。这是问题的形象: enter image description here

如何解决此问题?

2 个答案:

答案 0 :(得分:4)

您应该将adapter.getAdapter()转换为CustomListAdapter类,然后

答案 1 :(得分:2)

编译时错误是因为adapter不是您的CustomListAdapter。您可以做的是将adapter.getAdapter()的返回值转换为CustomListAdapter。相反,您应该使用已有的东西来检索位置上的对象。像getItemAtPosition(int)

一样