2013-05-12 1 views
2

ListView 항목을 표시 할 수 없으므로 문제가 switch 문에 있습니다. 그런 다음 ListView을 사용하여 html 문서를 열려면 webview를 사용해야합니다. 내 코드에 어떤 문제가 있습니까? OnItemClickListener이 구현의 ListView 사용onclick이 listview에서 작동하지 않습니다. switch case error

public class Main extends Activity { 

private ListView mListView; 

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


    ArrayList<MyData> myDataList = new ArrayList<MyData>(); 
    MyData one = new MyData("Text one", 1); 
    MyData two = new MyData("Text two", 2); 
    MyData three = new MyData("Text three", 3); 
    MyData four = new MyData("Text four", 4); 
    MyData five = new MyData("Text five", 5); 
    MyData six = new MyData("Text six", 6); 
    MyData seven = new MyData("Text seven", 7); 
    MyData eight = new MyData("Text eight", 8); 
    myDataList.add(one); 
    myDataList.add(two); 
    myDataList.add(three); 
    myDataList.add(four); 
    myDataList.add(five); 
    myDataList.add(six); 
    myDataList.add(seven); 
    myDataList.add(eight); 

    mListView = (ListView) findViewById(R.id.listview_); 

    mListView.setAdapter(new MyListAdapter(this, R.layout.row, myDataList)); 

} 

private class MyListAdapter extends ArrayAdapter<MyData> implements 
OnClickListener { 

    public ArrayList<MyData> items; 

    public MyListAdapter(Context context, int textViewResourceId, 
      ArrayList<MyData> items) { 
     super(context, textViewResourceId, items); 
     this.items = items; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater) 
      getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.row, null); 
     } 

     MyData myData = items.get(position); 
     if (myData != null) { 
      TextView textViewTwo = (TextView) v 
      .findViewById(R.id.text_view_two); 
      if (textViewTwo != null) { 
       textViewTwo.setText(myData.getText()); 
       // put the id to identify the item clicked 
       textViewTwo.setTag(myData.getId()); 
       textViewTwo.setOnClickListener(this); 
      } 
     } 
     return v; 
    } 

    @SuppressLint("ShowToast") 
    @Override 
    public void onClick(View v) { 

     this switch statement is the real problem 

     switch (v.getId()) { 
       case 1: 
        Toast.makeText(v.getContext(), "text 1", Toast.LENGTH_SHORT); 
        break; 


       default: 
        Toast.makeText(getBaseContext(), "default", Toast.LENGTH_SHORT); 
        break; 
      } 



    } 

} 

private class MyData { 
    private String text; 
    private int id; 

    public MyData(String text, int id) { 
     this.text = text; 
     this.id = id; 
    } 

    public String getText() { 
     return text; 
    } 

    public int getId() { 
     return id; 
    } 
} 
} 
+0

오류 로그를 게시하십시오. –

+0

05-12 13 : 57 : 05.015 : W/Trace (880) : nativeGetEnabledTags에서 예기치 않은 값 : 0 "logcat msg ... 내 앱이 작동하지만 토스트 onClick을 표시하지 않습니다! –

답변

1

이 아주 좋은 질문을 .... 다른 모든 사람이이 질문에 대한 올바른 대답을 잘못 대답은 ... 그렇지 않으면 THS

같은 쓰레기를 제공 해달라고입니다
switch(postion) 
{ 
case 1: 
... 
Case 2: 
..... 
} 
+0

와우! 그 일하는 ... 당신의 기여자에 감사드립니다 ... @ mohan .... 독일 회사에서 일하고 있습니까? –

+1

질문에 대한 대답이 아닙니다. 왜 그것이 받아 들여지고 upvoted입니까? – laalto

1

목록 항목을 클릭

YourList.setOnItemClickListener(new OnItemClickListener(){ 
@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) 
{ 
    //Your Code Here 
} 
}); 
+0

그는 하나에 대해 묻습니다. – Gunaseelan

+0

@Gunaseelan : 귀하의 의견에 대한 타이, 내 대답은 방금 관련이 있습니다 : 나는 토스트를 표시하기 위해 목록보기 항목 위치를 얻을 수 없습니다 –

+0

감사합니다 @ Arash!하지만이 onItemClickListener 수 없습니다 b 구현 ... 그것은 심지어 javadoc (ctrl + space)에 나타나지 않는다 –

1

변경

switch (v.getId()) { 
     case 1: 
        Toast.makeText(v.getContext(), "text 1", Toast.LENGTH_SHORT); 
        break; 


       default: 
        Toast.makeText(getBaseContext(), "default", Toast.LENGTH_SHORT); 
        break; 
      } 

switch (v.getId()) { 
       case R.id.text_view_two: 
        Toast.makeText(getBaseContext(), "text 1", Toast.LENGTH_SHORT); 
        break;      
      } 

좋아해. v.getId()은 항상 View의 ID를 반환하기 때문에 따라서 ID가 View 인 경우에만 확인해야합니다.

이 정보가 도움이되기를 바랍니다.

+0

이 코드와 함께가는 약간의 설명은 저에게 upvote를 주었을 것입니다. – codeMagic

+0

@codeMagic 이 친구가 충분합니까? – Gunaseelan

+0

물고기가 사람을 가르치십시오 ...;) – codeMagic

0

먼저보기 위해 ID를 설정해야합니다

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
     LayoutInflater vi = (LayoutInflater) 
     getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.row, null); 

     v.setId(items.get(position).getId()); //<- this 
    } 
} 
+0

감사합니다! 내 기존 코드에이 addon 시도했지만 .. 작동하지 않았다 ... 다른 코드를 제안 할 수 있습니다 –

관련 문제