2016-04-20 8 views
1

ListViewという簡単なアンドロイドアプリケーションを作成しました。私は下の私のカスタムリストアダプタを持っている:私は、パブリックメソッドgetListItemを持ってカスタムリストビューアでメソッドを作成する適切な方法

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); 
    } 

} 

、私はListViewのonClick中にそれを呼び出そうとしましたが、どういうわけか、私はそれを動作させるように見える傾けます。ここでは、問題の画像です: enter image description here

どのように私はこの問題を解決するのですか?

答えて

4

あなたは

+0

私はこの1つの 'CustomListAdapter a =(CustomListAdapter)adapter;を試しましたが、うまくいかなかったのです! –

+1

'AdapterView'は' Adapter'ではありません。あなたは 'ClassCastException'を取得します。 –

+0

@MikeM。、ありがとう! –

2

に、エラーが原因adapterがあなたのCustomListAdapterないという事実であるコンパイル時にadapter.getAdapter()CustomListAdapterにクラスをキャストする必要があります。あなたができることはadapter.getAdapter()の戻り値をCustomListAdapterにキャストすることです。逆に、すでに利用可能なものを使用して、その位置でオブジェクトを取得する必要があります。 Like getItemAtPosition(int)

関連する問題