2016-10-17 4 views
-1

Я хочу сделать OnItemClickListener динамическому списку. Список не должен иметь фиксированный размер. Вместо этого это размер строк в базе данных. Но как создать список слушателей, я не могу использовать текущий метод, который у меня есть, так как я не знаю размер списка.Динамические слушатели списка (OnItemClickListener)

ПРОБЛЕМА в потаенном КЛАССЕ, если (позиция == 0) {...}

public class VisaUtgiftFragment extends Fragment { 
    private MainActivity ui; 
    private TextView tvDatabase; 
    private MyDBHandler dbHandler; 
    private ListView lvUtgift; 



    public VisaUtgiftFragment() { 
     // Required empty public constructor 
    } 

    public void setActivity(MainActivity ui){ 
     this.ui = ui; 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_visa_utgift, container, false); 
     tvDatabase = (TextView)view.findViewById(R.id.tvDatabaseTest); 
     dbHandler = new MyDBHandler(getActivity(), null, null, 1); 
     tvDatabase.setText(dbHandler.databaseToString()); 
     lvUtgift = (ListView)view.findViewById(R.id.lvUtgift); 
//  lvUtgift.setAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, [the rows in the database])); 
     lvUtgift.setAdapter(new SimpleCursorAdapter(getActivity(), 
       android.R.layout.simple_list_item_1, 
       dbHandler.getAllItemsInCursor(), 
       new String[]{"_titel"}, 
       new int[]{android.R.id.text1}, 
       0)); 
     lvUtgift.setOnItemClickListener(new ListViewClicked()); 

     return view; 
    } 

    private class ListViewClicked implements android.widget.AdapterView.OnItemClickListener { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      if(position==0) { //Should be the clicked listview and execute the code 
       Cursor cursor = (Cursor) lvUtgift.getItemAtPosition(position); 
       String string = cursor.getString(cursor.getColumnIndexOrThrow("_titel")); 
       Toast.makeText(getActivity().getApplicationContext(), string, Toast.LENGTH_SHORT).show(); 
       ui.dVisaInkomst(); 
      } 
     } 
    } 
} 
+0

что это проблема? –

+0

Проблема заключается в следующем: я пытаюсь создать обработчик, который не использует функцию if (position == 0) {} else if (position == 1) {}, поскольку я не смогу это сделать потому что listview является динамическим и будет увеличиваться все время. – Amar

+0

Если я понимаю, вам нужно выполнить различные действия на основе выбранной позиции? – Nanoc

ответ

0

Удалить, если условие из onClickItem.

private class ListViewClicked implements android.widget.AdapterView.OnItemClickListener { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Cursor cursor = (Cursor)lvUtgift.getItemAtPosition(position); 
      if(cursor != null){ 
       String string = cursor.getString(cursor.getColumnIndexOrThrow("_titel")); 
       Toast.makeText(getActivity().getApplicationContext(), string, Toast.LENGTH_SHORT).show(); 
       ui.dVisaInkomst(); 
      }    
     } 
    } 
+0

Это не поможет. Мне нужно, чтобы иметь возможность делать более операторы if. Пример, если (щелкнул первый элемент списка) {...} else, если (нажата кнопка 304-го списка) {...} – Amar

+0

это невозможно. Зачем вам это нужно, если .. иначе ..? –

Смежные вопросы