2012-02-29 7 views
0

以下、コードを見ることができます。私はリストビュー用の簡単なアダプタを実装しました。しかし、私はonListItemClickに入ることができません。誰にでも提案がありますか?ListActivity CustomAdapterエラー、onListItemClickが動作しない

実際にはリストが正常に表示されますが、私はonitclickイベントを取得できません。前もって感謝します。

  public class MyListActivity extends ListActivity { 


     @Override 
      public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.main); 
       ArrayList<Frame> results = WebOperations 
         .loadList_Frame(); 
       myAdapter = new MyListAdapter(MyListActivity.this); 
       myAdapter.internalList = results; 

       setListAdapter(myAdapter); 
       myAdapter.notifyDataSetChanged(); 

     }; 

     @Override 
      protected void onListItemClick(ListView l, View v, int position, long id) { 
       String item = (String) getListAdapter().getItem(position); 
       Toast.makeText(this, item + " please show toast!!!!!!!!!", Toast.LENGTH_LONG).show(); 
      } 


     public static class MyListAdapter extends BaseAdapter { 

       public ArrayList<Frame> internalList; 
       public LayoutInflater mInflater; 
       public int pageCount = 0; 
       public MyListAdapter(Context context) { 
        mInflater = LayoutInflater.from(context); 
       } 
       public int getCount() { 
        if (internalList == null) 
         return 0; 
        return internalList.size(); 
       } 
       public Object getItem(int position) { 
        if (internalList == null || internalList.size() < position) 
         return null; 
        return internalList.get(position); 
       } 
       public long getItemId(int position) { 
        if (internalList == null || internalList.size() < position) 
         return 0; 
        return internalList.get(position).getId(); 
       } 
       public View getView(int position, View arg1, ViewGroup parent) { 
        View v = arg1; 
        if ((v == null) || (v.getTag() == null)) { 
         v = mInflater.inflate(R.layout.entryrow, null); 
         try { 
          String gunlukText = String.format(" %s ", 
            internalList.get(position).getKeyText().toString()); 
          TextView entry = (TextView) v 
            .findViewById(R.id.textViewEntryText); 
          entry.setText((CharSequence) gunlukText); 
         } catch (Exception e) { 
          Log.d("aaaaaaaaaaaaaaaaaaa", "errorrrrrrrrrrr"); 
         } 
        } 
        return v; 
       } 

      } 
      } 

EDIT 1:下記のentry_rowレイアウトxmlファイルを追加しています。

 <?xml version="1.0" encoding="utf-8"?> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/linearLayout1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/textViewEntryText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:inputType="textMultiLine" 
       android:padding="5dp" 
       android:paddingLeft="10dp" 
       android:text="@string/Ana_Sayfa" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

     </LinearLayout> 
+0

...それができますか?それは唯一の 'TextView'ですか? – Luksprog

+0

はい、今はただのテキストビューです。しかし後で私は画像ビュー等を追加します。 – Yaya

+0

あなたが膨張させる 'TextView'は' android:focusable'や 'android:focusableInTouchMode'属性を' true'に設定していますか? – Luksprog

答えて

1

戻すビューの直前にgetViewメソッドにonclicklistenerを追加します。あなたは、行のレイアウトにどのような見解を持っているん

v.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        Log.w("position", position + ""); 
       } 
      }); 

チェック

+0

あなたは良い提案をしましたdeepakに感謝します。 getviewメソッドで私はあなたが示唆したことをした、それは大丈夫だ。問題は今解決されました。しかし、私には何かが間違っているように思えます。リストアのために、onlistitemclickはうまく動作しません。私はこれを理解できません – Yaya

2

あなたのリストビューに、あなたのリスナーを追加することを検討すべきである:

getListView().setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String item = (String) getListAdapter().getItem(position); 
     Toast.makeText(this, item + " please show toast!!!!!!!!!", Toast.LENGTH_LONG).show(); 
    } 
}); 
+2

MyListActivityがすでにListActivityを拡張しています。 onListItemCLickは、ユーザーが任意のリストアイテムをクリックすると自動的に呼び出されるコールバックメソッドです。 ListActivityのドキュメントをお読みください。 – AndroDev

+0

これは私が自分で行うことです。おそらくonListItemClickは、ListActivityに組み込まれたリストビューに対してのみ機能します。 –

0

だけonListItemCLickedをオーバーライドして、チェックhttp://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List13.htmlからカスタムBaseAdapterのAPIのデモで与えられた良い例の1を参照してください。それは完璧に正常に動作します。それに応じてコードを修正してください。

+0

すべてのアンドロイドの例は、この例のような文字列型のカスタムアダプターを含んでいます.. – Yaya

+0

私のentryrow xmlファイルを追加しました。 2私はアダプタにアイテムを追加した後にnotifydatasetchangedを呼び出しています。 – Yaya

関連する問題