2012-02-04 14 views
0

ListActivityを使用せずにListViewを作成するにはどうすればいいですか?ListActivityを使用せずにListViewを作成する方法

私はレイアウトにいくつかの他のビューを配置する必要があり、レイアウトがListViewで完全に占有されていないことを望みます。レイアウト全体ではなく、レイアウトの一部でなければなりません。私は通常のアクティビティを作成したいと思います。

は、コードスニペット:

protected void onCreate(Bundle savedInstanceState) { 
     setContentView(R.layout.savings); 

     //... 
     ListView lvPoupanca = (ListView)this.findViewById(R.id.lvPoupanca); 

     // the adapter 
     TestRepository repo = new TestRepository(this); 

     Cursor c = repo.getCursor(); 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list_item, c, new String[]{"Nome", "ValorAtual"}, new int[] {R.id.tvNome, R.id.tvValorTotal}); 
     lvPoupancas.setAdapter(adapter); 
    // ... 

} 

編集:

saving.xmlファイル:

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

    <ListView 
     android:id="@+id/lvPoupancas" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     > 

    </ListView> 

</LinearLayout> 

ホープ誰かが私を助けることができます。

ありがとうございました。私の悪い英語については申し訳ありません。例

+0

このコードスニペットを実行すると何も起こりません。 – fvss

+0

興味深い部分は 'lvPoupancas'の宣言です。 – user802421

+0

申し訳ありません、xmlファイルを保存しました。 – fvss

答えて

3

...。 アクティビティを拡張し、onCreate()に以下のコードを入力します。

setContentView(R.layout.ur_xml); 
    Listview list = (ListView)findViewById(R.id.lvPoupancas); 
    list.setAdapter(your Adapter); 
+0

しかし、私はsavings.xmlに私のリストビューが必要です。 – fvss

+1

それをXMLに追加し、findViewById()で参照を取得します。 –

+0

私はこれをやっていますが、なぜ動作しないのかわかりません。 – fvss

2

については

ListView l = new ListView(this); 
// OR 
ListView l = (ListView) findViewById(R.id...); 
... 
l.setAdapter(...); 
// If using first way: setContentView(l); 

が、その後ListActivityを拡張しない任意の活動の他のビューと同様に

2

私は前に同様の質問に答えました。しかし、それは別の状況にあった。だから、私はここにいくつかの参照コードを入れています。問題を解決するのに役立ちます。

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

     final String [] str = {"ONE","TWO","THREE"}; 
     final ListView lv = (ListView) findViewById(R.id.listView1); 
     final TextView tv = (TextView)findViewById(R.id.tv1); 
     ArrayAdapter<Object> adapt = new ArrayAdapter<Object>(getApplicationContext(), android.R.layout.simple_list_item_1, str); 
     lv.setAdapter(adapt); 
     lv.setOnItemClickListener(new OnItemClickListener(){ 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
       tv.setText("You Clicked Something"); 
      } 
     }); 
    } 
} 

そしてXMLがところで

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 
    </ListView> 
    <TextView 
     android:id="@+id/tv1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" android:textSize="20dip"/> 
</LinearLayout> 

で、質問をする前に、あなたを助けるために他の人のために、できるだけ多くの情報を収集します。それがうまくいかない場合は、エラーログを質問に載せる方がいいでしょう。

+0

ありがとう、私はこれを試して、動作しませんでした。私はSimpleCursorAdapterにいくつかの問題があると思いますが、LogCatでエラーが発生せず、Lo​​gクラスを使用してデバッグすると、カーソルがすべて表示されます。すべてが機能します(エラーはありません)。ただし、拘束力はありません。私はGoogleで多くを試しましたが、解決策が見つかりませんでしたので、この問題は私を怒らせています。 – fvss

+0

このリスト用の新しいプロジェクトを作成し、それが機能するかどうかを確認してください。同様に、アダプタのために別のプロジェクトを作成してみてください。両方とも動作すれば、おそらくそれらを一緒に統合することができます。 Logcatは、あなたがプログラムを実行するときに何が起こっているのかについて少なくとも何らかのリファレンスを与えているはずです。返信するときにlogcatを貼り付けることを忘れないでください。 :) –

+0

ありがとう、この答えは完全に動作します。私を束に助けた;) – Simon

関連する問題