1

私は2つの画面で動作するAndroidのアプリケーションに取り組んでいます。最初の画面は単純で、「未設定」に初期化されたTextViewとボタンがあります。ユーザーがボタンをクリックすると、1つの大きなListViewである2番目の画面に移動します。ListViewは、これまでで最も収益の高い映画のリストです。タイトルだけを含めるのは簡単ですが、複数行になるようにリストビューを作成する必要があります。構造は、タイトルが左向き、粗利益が右向き、リリース日が2行目にあります。

重要な点は、strings.xmlで宣言された文字列配列を使用する必要があるということです。私はすでにそれらすべてを宣言しました、しかし私の問題は私がJava部分を作る方法に固執しているということです。これが私がこれまでに思いついたものです。

package com.android.rondrich;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class Lab5_082588part2 extends ListActivity {

    public static final String KEY = "KEY";
public static final String RETURN = "RETURN";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String[] titleList = getResources().getStringArray(R.array.title_array);
    String[] grossList = getResources().getStringArray(R.array.gross_array);

    setListAdapter(new ArrayAdapter<String>(this,
            R.layout.lab5_082588part2, grossList)); //not sure if     correct to have 2 setListAdapters

    setListAdapter(new ArrayAdapter<String>(this,
            R.layout.lab5_082588part2, titleList));

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

                Intent intent = getIntent();
                String title = ((TextView) view).getText().toString();
                intent.putExtra(Lab5_082588part2.RETURN, title);
                setResult(RESULT_OK, intent);
                finish();

            }
        });
    }

    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
        finish();
    }

}

私が調査したスニペットのいくつかは、この種のアプローチを使用しています(サンプルコード)

private ArrayList<SearchResults> GetSearchResults(){
 ArrayList<SearchResults> results = new ArrayList<SearchResults>();

 SearchResults sr = new SearchResults();
 sr.setName("Justin Schultz");
 sr.setCityState("San Francisco, CA");
 sr.setPhone("415-555-1234");
 results.add(sr);

ただし、この方法は長いリストでは非常に面倒です。問題は次のとおりです。

上記のようにハードコーディングせずに、strings.xmlで宣言された文字列配列を使用して複数行のリストビューを作成するにはどうすればよいですか?

4

2 に答える 2

1

アダプターを 2 回設定して、必要な行を表示することはできません。その代わりに、カスタム アダプターを実装する必要があります (何千ものチュートリアルがあるので、この部分は省略します)。

文字列配列からデータを抽出するには、投稿したスニペットを(ほとんど)使用します。

String[] titleList = getResources().getStringArray(R.array.title_array);
String[] grossList = getResources().getStringArray(R.array.gross_array);
// ...

private ArrayList<SearchResults> GetSearchResults(){
    ArrayList<SearchResults> results = new ArrayList<SearchResults>();
    // make sure the arrays have the same length
    for (int i = 0; i < titleList.length; i++) {
        SearchResults sr = new SearchResults();
        sr.setTitle(titleList[i]);
        sr.setGross(grossList[i]);
        results.add(sr);
   }
   return results;
}

次に、このメソッドによって返されたリストを使用して、カスタム アダプターを埋めます。

レイアウト例:

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

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="title" />

    <TextView
        android:id="@+id/gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/title"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Gross" />

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/title"
        android:text="Date" />

</RelativeLayout>
于 2012-08-02T13:06:11.987 に答える
0

このチュートリアルで読むことができるカスタム ListView 項目の作成方法: http://www.ezzylearning.com/tutorial.aspx?tid=1763429

Strings.xml から String を取得したい場合は、ativity クラスでそれを使用します。

getContext().getResources.getString(R.string.your_text);
于 2012-08-02T13:59:57.613 に答える