2013-10-24 72 views
0

Bah,我在做什么错在这里我设置了onItemClickListener的列表视图和onClick 将它带到不同的活动,但它告诉我它必须使用方法OnItemClicklistener,我有...OnItemClickListener not recognized

package org.iimed.www; 

import java.util.ArrayList; 
import java.util.List; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 
import android.widget.Toast; 
import org.iimed.www.R; 
import org.iimed.www.CustomListViewAdapter; 
import org.iimed.www.RowItem; 

public class ImageTextListViewActivity extends Activity implements 
     OnItemClickListener { 

    public static final String[] titles = new String[] { "Penicillins", 
      "Cephalosporins", "Monobactams", "Carbapenems","Macrolides","Tetracyclines",}; 

    public static final String[] descriptions = new String[] { 
      "It is an aggregate accessory fruit", 
      "It is the largest herbaceous flowering plant", "Citrus Fruit", 
      "Mixed Fruits","none","none" }; 

    public static final Integer[] images = { R.drawable.antibiotic_buton, 
      R.drawable.antibiotic_buton, R.drawable.antibiotic_buton, R.drawable.antibiotic_buton, R.drawable.antibiotic_buton,R.drawable.antibiotic_buton, }; 

    ListView listView; 
    List<RowItem> rowItems; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.screj); 

     rowItems = new ArrayList<RowItem>(); 
     for (int i = 0; i < titles.length; i++) { 
      RowItem item = new RowItem(images[i], titles[i], descriptions[i]); 
      rowItems.add(item); 


     listView = (ListView) findViewById(R.id.list); 
     CustomListViewAdapter adapter = new CustomListViewAdapter(this, 
       R.layout.list_item, rowItems); 
     listView.setAdapter(adapter); 
     listView.setOnItemClickListener(this); 

       @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
       // TODO Auto-generated method stub 
        { 
      Intent intent = null ; 
       switch (arg2) { 
      case 0: 
       intent = new Intent(ImageTextListViewActivity.this, MainActivity.class); 
       startActivity(intent);   
       break; 
      case 1: 
      intent = new Intent(ImageTextListViewActivity.this, Miipet.class); 
      startActivity(intent); 
       break; 
      default: 
       break; 



       }}}} 

适配器:

package org.iimed.www; 


import java.util.List; 
import org.iimed.www.R; 
import org.iimed.www.RowItem; 
import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CustomListViewAdapter extends ArrayAdapter<RowItem> { 

    Context context; 

    public CustomListViewAdapter(Context context, int resourceId, 
      List<RowItem> items) { 
     super(context, resourceId, items); 
     this.context = context; 
    } 


    private class ViewHolder { 
     ImageView imageView; 
     TextView txtTitle; 
     TextView txtDesc; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder = null; 
     RowItem rowItem = getItem(position); 

     LayoutInflater mInflater = (LayoutInflater) context 
       .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.list_item, null); 
      holder = new ViewHolder(); 
      holder.txtDesc = (TextView) convertView.findViewById(R.id.desc); 
      holder.txtTitle = (TextView) convertView.findViewById(R.id.title); 
      holder.imageView = (ImageView) convertView.findViewById(R.id.icon); 
      convertView.setTag(holder); 
     } else 
      holder = (ViewHolder) convertView.getTag(); 

     holder.txtDesc.setText(rowItem.getDesc()); 
     holder.txtTitle.setText(rowItem.getTitle()); 
     holder.imageView.setImageResource(rowItem.getImageId()); 

     return convertView; 
    } 
} 
+0

请清除你的问题。你面临什么问题?你有什么错误吗?后 – GrIsHu

+0

将一个你的花括号来:'listView.setOnItemClickListener(本);' – Aprian

+2

使用“公共无效onItemClick”是出onCreate方法 – Pinki

回答

1

我检查你的代码,有几个问题

1)您通过元素循环,并为每个元素

2适配器)你实现onItemClick里面的onCreate

我粘贴代码的修改但我用Object和CustomListViewAdapter用ListAdapter改变了RowItem,所以在这里使用你的对象,但这应该是你的代码的结构:)

package org.iimed.www; 

import java.util.ArrayList; 
import java.util.List; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 


public class ImageTextListViewActivity extends Activity implements OnItemClickListener { 

public static final String[] titles = new String[] { "Penicillins", 
    "Cephalosporins", "Monobactams",  "Carbapenems","Macrolides","Tetracyclines",}; 

public static final String[] descriptions = new String[] { 
    "It is an aggregate accessory fruit", 
    "It is the largest herbaceous flowering plant", "Citrus Fruit", 
    "Mixed Fruits","none","none" }; 

public static final Integer[] images = { R.drawable.antibiotic_buton, 
    R.drawable.antibiotic_buton, R.drawable.antibiotic_buton, R.drawable.antibiotic_buton, R.drawable.antibiotic_buton,R.drawable.antibiotic_buton, }; 

ListView listView; 
List<Object> rowItems; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.screj); 

    rowItems = new ArrayList<Object>(); 
    for (int i = 0; i < titles.length; i++) { 
     Object item = new Object(); 
     rowItems.add(item); 
    } 

    listView = (ListView) findViewById(R.id.list); 
    ListAdapter adapter = new ListAdapter(this,R.layout.list_item, rowItems); 
    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(this); 
} 

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    // TODO Auto-generated method stub 
    Intent intent = null ; 
    switch (arg2) { 
    case 0: 
     intent = new Intent(ImageTextListViewActivity.this, MainActivity.class); 
     startActivity(intent);   
     break; 
    case 1: 
     intent = new Intent(ImageTextListViewActivity.this, Miipet.class); 
     startActivity(intent); 
     break; 
    default: 
     break; 
    } 
} 
} 
+0

嘿感谢,但我想这两个,我也得到了同样的错误,因为我张贴在上面comment..I'm明显地关闭一些我应该在哪里不对? – ToeKnee

+0

非常感谢你,它的工作魅力,所以我应该RowItem项目=新RowItem}后已经关闭,然后列表视图后再次关闭?所以public void onItemClick不应该在onCreate中。但是我不明白你的第一点是什么意思,“你通过元素循环并为每个元素创建适配器”? – ToeKnee

+0

你没有关闭括号,所以重复n次。 – DrChivas

2

注册在点击这样的:

lv.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) { 
      // TODO Auto-generated method stub 

      Intent intent = new Intent(getApplicationContext(), ImageGridActivity.class); 

       startActivity(intent); 
     } 
    });