Нужна помощь ListView и onItemClickListener - PullRequest
1 голос
/ 21 декабря 2011

Я знаю, что есть много информации об использовании onItemClickListener и представления списка, но я новичок в разработке для Android и не могу заставить его работать.

Я не совсем уверен, куда мне добавить слушателя, поэтому я был бы очень признателен за помощь и руководство.

У меня есть два файла, основное занятие :

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);

    ArrayList<GroceryList> menuitems = getItems();

    ListView listView = (ListView) findViewById(R.id.Menu);
    listView.setAdapter(new GroceryListAdapter(this, R.layout.categorymenu, menuitems));        
}

и Файл ListAdapter :

public class GroceryListAdapter extends ArrayAdapter<GroceryList> {
private ArrayList<GroceryList> grocerylists;
private Activity activity;
public ImageManager imageManager;

public GroceryListAdapter(Activity a, int textViewResourceId, ArrayList<GroceryList> grocerylists) {
    super(a, textViewResourceId, grocerylists);
    this.grocerylists = grocerylists;
    activity = a;

}

public static class ViewHolder{
    public TextView name;
    public TextView message;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    ViewHolder holder;
    if (v == null) {        
        LayoutInflater vi = 
            (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.categorymenu, null);
        holder = new ViewHolder();
        holder.name = (TextView) v.findViewById(R.id.categoryname);
        holder.message = (TextView) v.findViewById(R.id.message);
        v.setTag(holder);
    }
    else
        holder=(ViewHolder)v.getTag();

    final GroceryList grocerylist = grocerylists.get(position);
    if (alcohollist != null) {
        holder.name.setText(grocerylist.name);
        holder.message.setText(grocerylist.message);
    }
    return v;
}

Извините, если я задаю вопрос, на который уже дан ответ, но я потратил много времени, пытаясь выяснить это для себя, но безуспешно.

Я надеюсь, что кто-то с большим опытом, чем я, сможет сказать мне, где и как я должен добавить метод onItemClickListen.

Спасибо!

Ответы [ 6 ]

1 голос
/ 21 декабря 2011

Судя по всему, вы используете обычную активность, поэтому вы должны добавить это:

 listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
               Toast.makeText(getApplicationContext(), "You clicked item at position"+position,
              Toast.LENGTH_SHORT).show();

            }
        });

ДО .setAdapter в вашей основной деятельности.Это должно сработать.

0 голосов
/ 21 декабря 2011

Здесь так много ответов, но, кажется, вы не поняли, что они говорят. Я тоже постараюсь дать ответ.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);

    ArrayList<GroceryList> menuitems = getItems();

    ListView listView = (ListView) findViewById(R.id.Menu);
    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
            // do whatever you want on clicking any list itm
        }
    });
    listView.setAdapter(new GroceryListAdapter(this, R.layout.categorymenu, menuitems));        
}

Надеюсь, вы поймете это.

0 голосов
/ 21 декабря 2011

Запишите следующий код после настройки адаптера.

listView.setOnItemClickListener(new OnItemClickListener(){

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub

        }});

Обрабатывайте функциональность, которую вы хотите выполнить при нажатии, в методе onItemClick.

0 голосов
/ 21 декабря 2011

у вас есть пользовательский адаптер , поэтому вы можете установить touchListner в виджете perticular, который вы определяете в макете categorymenu. это легко сделать, но

если вы используете простой просмотр списка , тогда

Добавить параметр в просмотр списка :

lview.setOnItemClickListener(this);

public void onListItemClick(ListView parent, View v, int position, long id) {
    // do with list-view item Position 
}

Для более ....

0 голосов
/ 21 декабря 2011
 @Override
    protected void onListItemClick(ListView l, View v, int position, long id){
       // startActivity( new Intent());

        Intent i = new Intent(this,"Next_Activity_Name".class);
        i.putExtra("selected",(int)selected_position);
        final int resultCode = 2;
        startActivityForResult(i,resultCode);



}

Вы должны добавить этот фрагмент кода в основное действие ur после метода onCreate ().

0 голосов
/ 21 декабря 2011

В вашем Основная деятельность:

listView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
      // When clicked, show a toast with the TextView text
      Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
          Toast.LENGTH_SHORT).show();
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...