2012-04-01 3 views
0

私はいくつかのSMSアプリケーションを開発しましたが、この問題の解決方法を理解することはできません... 1つのレイアウトで数字と日付を表示する2つのテキストビューを表示していますそれはうまくいきます...クラスのテキストビューに別のクラスのデータを埋め込む

しかし今、私はonListItemClickを実装しています。リスト項目をクリックすると、データベースからのメッセージ全体が新しいビューに読み込まれます。私はそれを達成します...

protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     super.onListItemClick(l, v, position, id); 


     dba.open(); 

     Cursor c=dba.executeQuery("select rowid _id,* from messages where rowid="+position+";"); 
     Log.v(tag, "value count"+ c.getCount()); 
     if(c.getCount()>0) 
     { 
      Log.v(tag, "value count"+c.getCount()); 
      c.moveToPosition(position); 
       Intent intent = new Intent(); 

       String mesage = c.getString(c.getColumnIndex("msg")); 

       Log.v("Value passed to class", mesage); 
       intent.putExtra(name, mesage); 

      intent.setClass(this, NewInterface.class); 
      startActivity(intent); 


     } 

    } 

ここに私がデータを渡している他のクラスのコードです。

protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.messages); 
     tv4 = (TextView) findViewById(R.id.tvMessages); 
     Bundle bundle=getIntent().getExtras(); 
     if(bundle!=null) 
     { 
      Log.v("Value got from class", bundle.getString("name")); 
      tv4.setText(bundle.getString("name")); 
     } 

リストビューは、電話番号を含むデータベースから、このメソッドを経由して移入されます....

ます。private void openAndQueryDatabase()リスト項目をクリックするだけで、{

newDB=new DBAdapter(this); 

    try { 

     newDB.open(); 
     Cursor c = newDB.executeQuery("select distinct nm,rowid _id from messages"); 

     if (c != null) { 

      if (c.moveToFirst()) 
       Log.v(tag, "Stage 1");{ 
       do { 

        String firstName = c.getString(c.getColumnIndex("nm")); 
        Log.v(tag, firstName); 
       // String date = c.getString(c.getColumnIndex("dt")); 

        results.add(firstName); 


       }while (c.moveToNext()); 
       Log.v(tag, "Stage 1"); 
      } 
     }   
+0

あなたが直面している問題 – Ishu

+0

ユーザーが特定のlistitemをクリックすると、特定のlistviewitemに表示されている電話番号が取得され、その番号のデータベースクエリが実行され、メッセージが取得され、別のレイアウトでそれを表示するための別のクラスへ... – kashifmehmood

+0

あなたはgetview()を追加することができますか正確にリストビュー項目には何かが含まれていますか? – Ishu

答えて

1

あなたが開いていますdbは、クリックされた位置に基づいてデータを取得します。あなたの最初のアクティビティ全体を読み込もうとするのではなく、インテントを使って次のアクティビティにintの位置を渡し、そこでデータベースクエリを作成するだけです。それはより簡単になり、より理にかなっています。それでもwholdeデータを渡したい場合は、(あなたのif(c.getCount>0)ブロックを置き換える)次のようなコードを使用します。

ArrayList<String> arrayList ; 

      Cursor c=null; 
      if(c.moveToFirst()){ 
       int x= c.getCount(); 
       int y =c.getColumnIndex("msg"); 
      arrayList = new ArrayList<String>(x); 
       for(int a=0;a<x;a++){ 
c.moveToPosition(a);      
arrayList.add(c.getString(y)); 

       } 
        Intent intent = new Intent(this,NewInterface.class); 
       intent.putStringArrayListExtra("msgs",arrayList); 
      startActivity(intent); 
      } 

リストビューのあなたのクリックされた行のtextViewsの1から番号を取得するには:

TextView tv1=(TextView)v.findViewbyId(R.id.number)//Replace this with id of tv displaying numbers 
String number = tv1.getText().toString(); 

これらの行をonListItemClickに追加し、この番号をクエリで使用します。

+0

のデータを意味しますが、問題は... int ...私はリストに表示されている電話番号が必要です...そして、その電話番号によると、データベースのクエリを実行....私は私を得ることを願って... – kashifmehmood

+0

listviewは数字ではなくtextviewを表示しています....それはクリックされているtextview thatsではなく、そのlistviewclick私はデータベースからのデータをテキストビューに取り込みたいと思います... – kashifmehmood

+0

上記の2行を追加しましたか? – Akhil

関連する問題