2013-10-24 4 views
0

Бах, что я делаю неправильно здесь Я установил onItemClickListener для просмотра списка и onClick , чтобы отнести его к различным действиям, но он говорит мне, что он должен использовать метод OnItemClicklistener, и у меня есть ...OnItemClickListener не распознан

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 (this);' – Aprian

+2

использовать 'public void onItemClick' вне метода oncreate – Pinki

ответ

1

Я проверил ваш код и есть несколько проблем

1) вы на велосипед через элементы и создать адаптер для каждого элемента

2) вы реализовали onItemClick внутри OnCreate

счетной ревизию коды но я изменил RowItem с Object и CustomListViewAdapter с помощью ListAdapter, поэтому используйте ваш объект там, но это должна быть структура вашего кода :)

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

Эй, спасибо, но я пробовал оба из них, и я получаю ту же ошибку, что и в опубликованном выше комментарии. Я, очевидно, закрываю что-то, где я не должен правильно? – ToeKnee

+0

Спасибо, что это сработало, поэтому я должен был закрыть после RowItem item = new 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); 
     } 
    }); 
Смежные вопросы