Android の ListView に問題があります。EditText ビューとボタンを備えたアクティビティがあります。アイデアは、ユーザーが EditText フィールドに情報を入力し、検索ボタンをタッチして、EditText とボタンの下の同じアクティビティに表示される Web サービスからリストを取得する必要があるということです。インターネットからデータを取得しましたが、項目が表示されませんでした。私はnotifyDataSetChanged()を使用していました。数時間成功しなかった後、いくつかのアイテムを手動で配置しようとしましたが、再び何も表示されないことが判明したため、リストビューとアダプターを設定しようとしているときに何か間違っていると思います. だからここにコードがあります..
アクティビティ activity_search.xml の xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp">
<EditText
android:id="@+id/edit_search"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:inputType="text"
android:hint="Enter info"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button_search"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:drawable/ic_menu_search"
android:contentDescription="Search"
android:ems="10" />
</LinearLayout>
<ListView
android:id="@+id/listview_items"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="false" />
アイテムrow.xmlのXML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="5dp">
<TextView
android:id="@+id/row_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Common_TextContent"
android:textAppearance="@android:style/TextAppearance.Holo.Medium" />
<TextView
android:id="@+id/row_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/Common_TextContent"
android:textAppearance="@android:style/TextAppearance.Holo.Small" /></LinearLayout>
カスタム アダプタ:
public class ItemsListAdapter extends ArrayAdapter<ItemsList> {
private int[] colors = new int[] { 0x30ffffff, 0x30808080 };
public AssetListAdapter(Context context,
List<ItemsList> itemsList) {
super(context, 0, itemsList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row, null);
}
convertView.setBackgroundColor(colors[position % colors.length]);
TextView code = (TextView) convertView.findViewById(R.id.row_code);
code.setText(getItem(position).getCode());
TextView name = (TextView) convertView.findViewById(R.id.row_name);
name.setText(getItem(position).getName());
return convertView;
}
Activity の onCreate メソッド
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
_listView = (ListView) findViewById(R.id.listview_items);
_listItems = new ArrayList<ItemsList>();
_listItems.add(new ItemsList ("cosa1", "cosa1", "cosa1", "cosa1"));
_listItems.add(new ItemsList ("cosa2", "cosa2", "cosa2", "cosa2"));
_listItems.add(new ItemsList ("cosa3", "cosa3", "cosa3", "cosa3"));
_adapter = new ItemsListAdapter(this, _listItems);
_listView.setAdapter(_adapter);
}
ItemsList は、すべてのゲッターが実装された 4 つの文字列を持つ単なるオブジェクトです。アダプターの getView メソッドでデバッグすると、ビュー (convertView) が作成され、正しい情報が表示されます。画面に表示されていないだけです。私は何を間違っていますか?
ありがとう...