Я использую два адаптера списка, как показано на рисунке ниже. resultList и resultList2 инициализируются new ArrayList <HashMap<String,String>>();
Совет по android setlistadapter и объединение двух макетов .xml
ListAdapter adapter, adapter2;
adapter =new SimpleAdapter(
getActivity(), resultList,
R.layout.list_item1, new String[]{TAG_ID, TAG_FRUIT, TAG_SPECIES},
new int[]{R.id.Id,R.id.fruit,R.id.species});
adapter2=new SimpleAdapter(
getActivity(), resultList2,
R.layout.list_item_append, new String[]{ TAG_NAME, TAG_ADDRESS, TAG_EMAIL},
new int[]{ R.id.name, R.id.address, R.id.email});
setListAdapter(adapter);
setListAdapter(adapter2); //this line has overriden setListAdapter(adapter)
У меня есть две раскладки с именем list_item1.xml и list_item2.xml.
//list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/Id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold"
android:descendantFocusability="blocksDescendants"
android:visibility="gone"/><!--android:visibility="gone" -->
<TextView
android:id="@+id/fruit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold" />
<TextView
android:id="@+id/species"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold" />
</LinearLayout>
второй макет: list_item2.xml
list_item.xml
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold" />
<TextView
android:id="@+id/address"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold" />
<TextView
android:id="@+id/email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold" />
Я пытался использовать <include>
и <merge>
в моем новом макете, но это не то, чего я хотел. Результат отображает все элементы в адаптере2. Но перед каждым элементом адаптера2 есть пустой элемент списка.
Мой ожидаемый результат являются:
адаптер ....
адаптер ....
адаптер ...
adapter2 ...
adapter2 ...
adapter2 ...
Как могу ли я достичь этого? Я думаю, что setListAdapter является причиной проблемы.
Причина, по которой я использовал два listadapter, заключается в том, что я пытаюсь выполнить два набора двух данных из моей базы данных. Данные извлекаются из таблицы с именем tblfruit и tblperson.
$response["results"] = array();
$response["results2"] = array();
// temp user array
$results = array();
$results2=array();
while ($row = mysql_fetch_array($result)){
$results["id"] = $row["id"];
$results["fruit"] = $row["fruit"];
$results["species"] = $row["species"];
array_push($response["results"], $results);
}
while ($row = mysql_fetch_array($result2)){
$results2["name"] = $row["name"];
$results2["address"] = $row["address"];
$results2["email"] = $row["email"];
array_push($response["results2"], $results2);
}
Используйте два разных вида ListView для двух разных адаптеров. –
Используйте один и тот же список (только один список) только с одним адаптером, а внутри адаптера используйте тип элементов и вызовите макет, который вам нужен для каждого элемента. – xanexpt
привет, дхаваль и привет bmarqes. Я отредактировал свой вопрос. Пожалуйста, посмотрите спасибо. – Aroma88