web-dev-qa-db-ja.com

androidの非常にシンプルなList / ListAdapterの例はありますか

オブジェクトの非常に単純なリストを返すWebサービスがあります

MyObject [] data = webServiceCall();

MyObjectには表示したいフィールドが1つあり、"Name"(つまりdata[0].Name

これをAndroidのスクロール可能なlistActivityにこれらのオブジェクトの名前だけをリストするアクティビティに変換するにはどうすればよいですか。私は本当にカーソルと混同されており、カーソルが必要かどうかわからず、どの種類のアダプターを実装するかわからない(BaseAdapterSimpleAdapterなど)

だから私は3つのものを探していると思う

アクティビティ、アダプター、layout.xml

これを理解しようとしているAndroidのもの、間違いなくここに初心者

21
slim

だから私はRobGThaiの答えから少しインスピレーションを得てそれを理解したと思う、私は他の人が見るためにコードを投稿している、私は本当にカスタムアダプターを使用しなかったと思う

これは私を始めた非常に簡単な例です。したがって、これを取得したら、「MyObject」にtoString()メソッドがリストに正しく表示されるようにし、MyObject []配列を「new listItemsの代わりにArrayAdapter」コンストラクター

FooList.Java

import Android.app.ListActivity;
import Android.os.Bundle;
import Android.widget.ArrayAdapter;

public class FooList extends ListActivity {
    String[] listItems = {"item 1", "item 2 ", "list", "Android", "item 3", "foobar", "bar", }; 
    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.temp);
         setListAdapter(new ArrayAdapter(this,  Android.R.layout.simple_list_item_1, listItems));
     }

}

使用したレイアウトxml(temp.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical" Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">
    <ListView Android:id="@Android:id/list" Android:layout_width="fill_parent"
        Android:layout_height="wrap_content" />
    <TextView Android:id="@Android:id/empty" Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" Android:text="Empty set" />
</LinearLayout>
44
slim

アクティビティがListActivityも拡張するようにします。

次に、これはあなたが始めるのに役立つはずです。

Object[] sArray = {"This", "is", 3.5, true, 2, "for", "bla"};
ArrayAdapter adp = new ArrayAdapter(this, Android.R.layout.simple_list_item_1, sArray);
setListAdapter(adp);

2番目のパラメーターは、好みのレイアウトに変更できます。詳細については、APIドキュメントを参照してください。

10
RobGThai

ユーザーがAlertDialogをクリックしたときに、ListViewListItemを付加することもできます。誰かが同じことをしようとしている場合に備えて、以下の作業コードを含めています。

_final ListView v = getListView();
v.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(final AdapterView<?> parentView, View view, int position,
        long id) {
    final String fileName = (String) parentView.getItemAtPosition(position);
    new AlertDialog.Builder(parentView.getContext()).setTitle("Upload").setMessage("Upload " + fileName +"?")
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface di, int arg1) {
                //do something here...
            }
        }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface di, int arg1) {
                di.dismiss();                           
            }
        }).show();
}   
});
_

重要なのは、囲んでいるアクティビティのコンテキストをダイアログに渡す必要があるということです。 getApplicationContext()が異常なエラーメッセージで失敗したときにそれを見つけました。

1
barryku