在Android中将子项添加到listview
我目前有一个包含两个字符串的listview。这些是从strings.xml中的字符串数组调用的在Android中将子项添加到listview,android,listview,subitem,Android,Listview,Subitem,我目前有一个包含两个字符串的listview。这些是从strings.xml中的字符串数组调用的 <string name="app_name">Taxi Me</string> <string-array name="taxi_array"> <item>Barrys Taxi</item> <item>Boom Taxi</item> </string-array> 给我打车
<string name="app_name">Taxi Me</string>
<string-array name="taxi_array">
<item>Barrys Taxi</item>
<item>Boom Taxi</item>
</string-array>
给我打车
巴里斯出租车
吊杆式出租车
我试图做的是为这些创建子项,以便显示地址和联系人详细信息等字段。我前一段时间制作了一个customlistview,但无法确定如何使用strings.xml文件执行此操作?是否需要使用任何特定的标记,以便它们显示在列表视图中
主要活动代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final String[] taxi = getResources().getStringArray(R.array.taxi_array);
final String[] address = getResources().getStringArray(R.array.taxi_add);
setListAdapter(new ArrayAdapter<String>(this, R.layout.listtaxi, taxi));
final ListView lv = getListView();
lv.setTextFilterEnabled(true);
for (int i = 0; i < taxi.length; i++) {
lv.add(new ListTaxi (taxi[i], address[i]));
}
/*lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_LONG).show();
}
});
*/
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, final int position, long id)
{
final int selectedPosition = position;
AlertDialog.Builder adb=new AlertDialog.Builder(ListTaxi.this);
adb.setTitle("Taxi Booking");
adb.setMessage("You Have Selected: "+lv.getItemAtPosition(position));
adb.setPositiveButton("Book", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(getApplicationContext(), Booking.class);
intent.putExtra("booking", taxi[selectedPosition]);
startActivity(intent);
}
});
adb.setNegativeButton("Cancel", null);
adb.show();
}
});
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
最后一个字符串[]taxi=getResources().getStringArray(R.array.taxi\u数组);
最终字符串[]地址=getResources().getStringArray(R.array.taxis\u add);
setListAdapter(新阵列适配器(this,R.layout.listtaxi,taxi));
最终ListView lv=getListView();
lv.setTextFilterEnabled(真);
对于(int i=0;i
您正在寻找某种嵌套列表吗?查看ExpandableListView:
和
编辑:好的,只是为了好玩,我把它放在一起。它编译和功能正确,看看你是否可以根据你的特殊需要调整它: layout/taxi\u list\u item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:padding="10dp"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/taxi_name"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/taxi_address"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:padding="10dp"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/taxi_name"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/taxi_address"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
TaxiMain.java
package com.test.taxi;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class TaxiMain extends ListActivity {
/** Called when the activity is first created.
* @return */
class Taxi {
private String taxiName;
private String taxiAddress;
public String getName() {
return taxiName;
}
public void setName(String name) {
taxiName = name;
}
public String getAddress() {
return taxiAddress;
}
public void setAddress(String address) {
taxiAddress = address;
}
public Taxi(String name, String address) {
taxiName = name;
taxiAddress = address;
}
}
public class TaxiAdapter extends ArrayAdapter<Taxi> {
private ArrayList<Taxi> items;
private TaxiViewHolder taxiHolder;
private class TaxiViewHolder {
TextView name;
TextView address;
}
public TaxiAdapter(Context context, int tvResId, ArrayList<Taxi> items) {
super(context, tvResId, items);
this.items = items;
}
@Override
public View getView(int pos, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.feed_view, null);
taxiHolder = new TaxiViewHolder();
taxiHolder.name = (TextView)v.findViewById(R.id.taxi_name);
taxiHolder.address = (TextView)v.findViewById(R.id.taxi_address);
v.setTag(taxiHolder);
} else taxiHolder = (TaxiViewHolder)v.getTag();
Taxi taxi = items.get(pos);
if (taxi != null) {
taxiHolder.name.setText(taxi.getName());
taxiHolder.address.setText(taxi.getAddress());
}
return v;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] taxiNames = getResources().getStringArray(R.array.taxi_name_array);
String[] taxiAddresses = getResources().getStringArray(R.array.taxi_address_array);
ArrayList<Taxi> taxiList = new ArrayList<Taxi>();
for (int i = 0; i < taxiNames.length; i++) {
taxiList.add(new Taxi(taxiNames[i], taxiAddresses[i]));
}
setListAdapter(new TaxiAdapter(this, R.layout.taxi_list_item, taxiList));
}
}
package com.test.taxi;
导入java.util.ArrayList;
导入java.util.List;
导入android.app.ListActivity;
导入android.content.Context;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
公务舱的士服务{
/**在首次创建活动时调用。
*@返回*/
班车{
私有字符串名称;
专用字符串地址;
公共字符串getName(){
返回出租车名称;
}
公共void集合名(字符串名){
名称=名称;
}
公共字符串getAddress(){
返回地址;
}
公共无效设置地址(字符串地址){
地址=地址;
}
公共出租车(字符串名称、字符串地址){
名称=名称;
地址=地址;
}
}
公共类出租车适配器扩展阵列适配器{
私有ArrayList项;
私人的士车主;
私家车乘客{
文本视图名称;
文本视图地址;
}
公共出租车适配器(上下文、int TVRIST、ArrayList项){
超级(上下文、TVRID、项目);
这个项目=项目;
}
@凌驾
公共视图getView(int pos、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutInflater vi=(LayoutInflater)getSystemService(布局\充气机\服务);
v=vi.充气(R.布局.进料视图,空);
出租车持有者=新出租车视图持有者();
taxiHolder.name=(TextView)v.findViewById(R.id.taxi\u name);
taxiHolder.address=(TextView)v.findViewById(R.id.taxi\u地址);
v、 setTag(出租车乘客);
}else taxiHolder=(TaxiViewHolder)v.getTag();
出租车=物品。获取(pos);
如果(滑行!=null){
taxiHolder.name.setText(taxi.getName());
taxiHolder.address.setText(taxi.getAddress());
}
返回v;
}
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[]taxiNames=getResources().getStringArray(R.array.taxi\u name\u array);
String[]taxiAddresses=getResources().getStringArray(R.array.taxi\u address\u array);
ArrayList taxiList=新的ArrayList();
for(int i=0;i
结束编辑
您最好使用一个数据库来处理类似的事情,以便将记录绑定在一起。如果您打算使用数组,您可以做的一件事是为您需要的每个项目创建一个单独的数组(例如,taxi_数组、taxi_地址数组、taxi_电话数组),然后在代码中创建一个taxi对象:
class Taxi {
String taxiName;
String taxiAddress;
String taxiPhone;
public Taxi(String name, String address, String phone) {
taxiName = name;
taxiAddress = address;
taxiPhone = phone;
}
}
private List<Taxi> taxiList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] taxiNames = getResources().getStringArray("taxi_array");
String[] taxiAddresses = getResources().getStringArray("taxi_address_array");
String[] taxiPhones = getResources().getStringArray("taxi_phone_array");
taxiList = new ArrayList<Taxi>();
for (int i = 0; i < taxiNames.length; i++) {
taxiList.add(new Taxi(taxiNames[i], taxiAddresses[i], taxiPhones[i]));
}
}
class出租车{
字符串名称;