使用 LazyAdapter 和 getAdapter() 检索值时出现问题



我正在使用LazyAdapter显示列表视图,我想在单击该项目时将值传递给另一个活动。但是我在检索值时遇到问题。请帮帮我。主活动.java

        list=(ListView)findViewById(R.id.list);
        //transparent so when scrolling listview won't turn black.
        list.setCacheColorHint(Color.TRANSPARENT); 
         // Getting adapter by passing JSON data ArrayList
         adapter=new LazyAdapter(ReviewShowActivity.this, reviewlist);
         list.setAdapter(adapter);
         list.setOnItemClickListener(new OnItemClickListener() {
            @SuppressWarnings("unchecked")
            @Override
             public void onItemClick(AdapterView<?> parent, View view,
                     int position, long id) {
                //Having Trouble with this line, how to retrieve value???
                HashMap<String, String> map2 = (HashMap<String, String>) list.getAdapter().getItem(position);
                Intent in = new Intent(getApplicationContext(), SingleReviewActivity.class);
                in.putExtra(TAG_NAME, map2.get(TAG_NAME));
                in.putExtra(TAG_USERREVIEW, map2.get(TAG_USERREVIEW));
                in.putExtra(TAG_DATE, map2.get(TAG_DATE));
                in.putExtra(TAG_THUMBURL, map2.get(TAG_THUMBURL));
                startActivity(in);
             }
         });

懒惰适配器.java

 public class LazyAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader; 
public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
    return data.size();
}
public Object getItem(int position) {
    return position;
}
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.reviewshow, null);
    TextView username = (TextView)vi.findViewById(R.id.username); // title
    TextView userreview = (TextView)vi.findViewById(R.id.userreview); // artist name
    TextView numlikes = (TextView)vi.findViewById(R.id.numlikes); // duration
    HashMap<String, String> map = new HashMap<String, String>();
    map = data.get(position);
     //Setting all values in listview
     username.setText(map.get(ReviewShowActivity.TAG_NAME));
     userreview.setText(map.get(ReviewShowActivity.TAG_USERREVIEW));
     numlikes.setText(map.get(ReviewShowActivity.TAG_NUMLIKES));
    return vi;
}

日志猫

04-13 04:14:36.135: E/AndroidRuntime(23909): FATAL EXCEPTION: main
04-13 04:14:36.135: E/AndroidRuntime(23909): java.lang.ClassCastException:     java.lang.Integer
04-13 04:14:36.135: E/AndroidRuntime(23909):    at org.example.veniew.ReviewShowActivity$ReviewTask$1.onItemClick(ReviewShowActivity.java:221)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at  android.widget.AdapterView.performItemClick(AdapterView.java:284)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at android.widget.ListView.performItemClick(ListView.java:3561)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at android.os.Handler.handleCallback(Handler.java:587)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at android.os.Looper.loop(Looper.java:143)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at android.app.ActivityThread.main(ActivityThread.java:4277)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at java.lang.reflect.Method.invokeNative(Native Method)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at java.lang.reflect.Method.invoke(Method.java:507)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-13 04:14:36.135: E/AndroidRuntime(23909):    at dalvik.system.NativeStart.main(Native Method)

这是那些面临类似问题的人的答案。

public Object getItem(int position) { 
return data.get(position); 
}

也许这个链接可以帮助你获取数据数组列表哈希图,把这段代码放在setonitemclicklistener上

链接

最新更新