私は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で宣言された文字列配列を使用して複数行のリストビューを作成するにはどうすればよいですか?