オブジェクトの非常に単純なリストを返すWebサービスがあります
MyObject [] data = webServiceCall();
MyObjectには表示したいフィールドが1つあり、"Name"
(つまりdata[0].Name
)
これをAndroidのスクロール可能なlistActivity
にこれらのオブジェクトの名前だけをリストするアクティビティに変換するにはどうすればよいですか。私は本当にカーソルと混同されており、カーソルが必要かどうかわからず、どの種類のアダプターを実装するかわからない(BaseAdapter
、SimpleAdapter
など)
だから私は3つのものを探していると思う
アクティビティ、アダプター、layout.xml
これを理解しようとしているAndroidのもの、間違いなくここに初心者
だから私は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>
アクティビティが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ドキュメントを参照してください。
ユーザーがAlertDialog
をクリックしたときに、ListView
にListItem
を付加することもできます。誰かが同じことをしようとしている場合に備えて、以下の作業コードを含めています。
_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()
が異常なエラーメッセージで失敗したときにそれを見つけました。