1

私はいくつかの簡単なビューを含むアプリケーションを書いています。最初はたった2つのボタンです。各ボタンは地図につながり、この地図からサイト上の建物のリストを開くボタンがあります。ここから、ユーザーは建物を選択して詳細情報を表示できます(実際の連絡先リストのように)。これまでのところ、次のように、文字列配列を作成してアクティビティ内に直接入力することで、リストビューに入力できます。

public class BuildingsActivity extends ListActivity {

static final String[] buildings=new String[]{
    "Building 1",
    "Building 2",
    "Building 3",
    "Building 4",
    "Building 5"
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_buildings);
    // Show the Up button in the action bar.
    getActionBar().setDisplayHomeAsUpEnabled(true);
    setListAdapter(new ArrayAdapter<String>(this,           android.R.layout.simple_list_item_1,buildings));
}

これはすべてうまく機能し、5項目のリストには適していますが、最終的な形式では、リストには最大100の建物が含まれる可能性があり、2つの懸念があります。1)100項目の長い文字列配列は非常に粗く見えます。このようなコードで定義されています2)事前にこのような大量の文字列値のリストを生成する必要がある場合、アプリケーションがアクティビティを開くのにどれくらいの時間がかかるかが心配です

これを回避するために、strings.xmlファイルでこの文字列配列を定義し、リストアクティビティに対応するレイアウトXMLのリストレイアウトに文字列を割り当てることを考えました。ただし、これまでのところ、これは機能していないようです。エラーはありませんが、android:entriesコマンドはレイアウトにまったく影響を与えません。これはXMLです。誰かがこの方法でリストを作成する知識を持っているなら、私はあなたの答えをいただければ幸いです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".BuildingsActivity" >
    <ListView
          android:id="@android:id/list"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:entries="@array/buildings">
    </ListView>

</RelativeLayout>

もう1つの方法は、テキストファイルから取得することです。これは、詳細を作成するために行う必要があります(テキストの量が多すぎて文字列として保存する必要がないため)が、リストでは避けたいと考えていました。確かに、私はこのルートをあまり研究していません(私はまだそれを使いたくなかったので、他のフォーラムで見たものに基づいてそれは難しいようですが、この方法のサポートがたくさんあるなら、私は確かにそうしますそれを使用する際のアドバイスに感謝します。

これのいずれかがすでに他のスレッドでカバーされている場合は、私を許してください。私は似たようなトピックを検索しましたが、この方法でリストに入力したいと思う人は誰もいなかったようで、彼らの質問からの多くの言語が私の頭に浮かびました(私は非常に新しいです...これは、作業を終えた以外に、私の最初の実際のアプリケーションです開発者のWebサイトにあるチュートリアルの一部。

4

3 に答える 3

1

JavaはインターフェースをArrayList実装しており、関数とSerializableを使用して、純粋なバイナリ形式との間で配列を保存およびロードできます。このページはあなたが始めるのに十分なはずです。writeObjectreadObject

于 2013-02-16T04:20:06.293 に答える
0

String []の上限が100の場合、配列を生成してアダプターに渡すだけで問題はないと思います。コードが全体的に見えることについての懸念について、この情報をデータベースに保存してから要求することを検討しましたか?たとえば、すべての情報を含むBuilding Entityを作成し、OrmLiteを使用してMySQLに永続化することができます。http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_1.html#SEC1次に、配列表現を返すよりもゲッターを記述して、醜いコードを回避することができます。

于 2013-02-16T04:25:41.830 に答える
0

リソースファイルからlistViewにデータを入力する場合は、コードでこれを使用する必要があります。

String[] values = getResources().getStringArray(R.array.<input_file>);

値をロードしたら、次のようにArrayAdapterに割り当てる必要があります。

adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);

2番目のパラメーターはAndroidSDKの事前定義されたレイアウトであり、独自のレイアウトを使用できます。

于 2013-02-16T05:04:27.473 に答える