2016-10-17 2 views
-1

나는 동적 목록보기에 OnItemClickListener 만들고 싶어. listview는 고정 된 크기가 아니어야합니다. 대신 데이터베이스의 행 크기입니다. 하지만 어떻게 내가 목록보기의 크기를 알 수 없기 때문에 내가 가지고있는 현재의 방법을 사용할 수 없습니다 concidering 리스너를 만들려면 어떻게해야합니까. (위치 == 0) {...}동적 목록보기 리스너 (OnItemClickListener는)

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

문제는 다음입니다 : 나는이 기능을 사용하지 않는 처리기를 만들려고 해요 경우 (위치 == 0) {} 다른 경우 (위치 == 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 문을 더 만들 수있는 방법이 필요합니다. 예 (첫 번째 목록보기 요소가 클릭이) {...} 경우 다른 (304번째 목록보기 요소가 클릭)하면 {...} 불가능 – Amar

+0

. 왜 그런 종류의 다른 사람이 필요합니까? –