Android 将多个名称从ListView放入单个视图

Android 将多个名称从ListView放入单个视图,android,listview,view,Android,Listview,View,我正在使用ListView来显示名称数组。 它的代码如下所示: public class Imenik extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final String[] seznam =

我正在使用ListView来显示名称数组。 它的代码如下所示:

public class Imenik extends ListActivity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  final String[] seznam = getResources().getStringArray(R.array.seznam_array);
  setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, seznam));

  final ListView lv = getListView();
  lv.setTextFilterEnabled(true);

  lv.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
            if ("Baj And".equals(seznam[position]))
            { Intent i = new Intent(Imenik.this,Bajzelj.class); startActivity(i); lv.getItemIdAtPosition(position); }   
            else if ("Bes Jaz".equals(seznam[position]))
            { Intent i = new Intent(Imenik.this,Bajzelj.class); startActivity(i); }             
        }
      });
    } 

}
Bundle bundle = getIntent().getExtras();  
long _id = bundle.getLong("id");
}

可以这样显示它们吗?我不是一个程序员,所以我在这方面遇到了很多麻烦。我知道我应该以某种方式检查位置,但我不知道怎么做


提前感谢任何愿意帮助我的人

将ID传递给新活动的方式很奇怪。尝试使用以下方法:

Intent i = new Intent(Imenik.this,Bajzelj.class); 
i.putExtra("id", id);
startActivity(i);
然后,一旦您参加了Bajzelj活动,请按如下方式获取id:

public class Imenik extends ListActivity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  final String[] seznam = getResources().getStringArray(R.array.seznam_array);
  setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, seznam));

  final ListView lv = getListView();
  lv.setTextFilterEnabled(true);

  lv.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
            if ("Baj And".equals(seznam[position]))
            { Intent i = new Intent(Imenik.this,Bajzelj.class); startActivity(i); lv.getItemIdAtPosition(position); }   
            else if ("Bes Jaz".equals(seznam[position]))
            { Intent i = new Intent(Imenik.this,Bajzelj.class); startActivity(i); }             
        }
      });
    } 

}
Bundle bundle = getIntent().getExtras();  
long _id = bundle.getLong("id");

遵循这个更有效的方法

  • 使用地图对象存储单个用户数据
  • 将这些贴图对象添加到列表中
  • 使用自定义适配器在ListView中显示
  • 每当用户单击特定的列表项时,传递其在意图中的位置
  • 从Bundle中获取位置,并从列表的映射中检索特定的用户数据
  • 显示用户的所有数据
  • 如果需要代码段,请将用户数据字段发送给我,我可以将代码段发送给您

    这是代码

    Test.java

    package com.test;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListView;
    
    public class Test extends Activity{
        public Map<String,Object> userData;
        public static List<Object> userList;
    
        String[] name = {"name_one","name_two","name_three","name_four","name_five"};
        String[] lastName = {"lastName_one","lastName_two","lastName_three","lastName_four","lastName_five"};
        String[] telephoneNumber = {"telephoneNumber_one","telephoneNumber_two","telephoneNumber_three","telephoneNumber_four","telephoneNumber_five"};
        String[] mobileNumber = {"mobileNumber_one","mobileNumber_two","mobileNumber_three","mobileNumber_four","mobileNumber_five"};
        String[] skypeUserName = {"skypeUserName_one","skypeUserName_two","skypeUserName_three","skypeUserName_four","skypeUserName_five"};
        String[] email = {"email_one","email_two","email_three","email_four","email_five"};
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            userList = new ArrayList<Object>();
            for(int i=0;i<5;i++){
                userList.add(getUserData(i));
            }       
            ListView lv = (ListView)findViewById(R.id.list);
            ListCustAdapter adapter = new  ListCustAdapter(this, userList);
            lv.setAdapter(adapter);     
            lv.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                        long arg3) {
                    Intent i = new Intent(Test.this,Test2.class); 
                    i.putExtra("position", position);
                    startActivity(i);
    
                }
            });     
        }
    
        public Map<String,Object> getUserData(int i){
            userData = new HashMap<String,Object>();
            userData.put("name", name[i]);
            userData.put("lastName", lastName[i]);
            userData.put("telephoneNumber", telephoneNumber[i]);
            userData.put("mobileNumber", mobileNumber[i]);
            userData.put("skypeUserName", skypeUserName[i]);
            userData.put("email", email[i]);
            return userData;
        }
    }
    
    package.com.test;
    导入java.util.ArrayList;
    导入java.util.HashMap;
    导入java.util.List;
    导入java.util.Map;
    导入android.app.Activity;
    导入android.content.Intent;
    导入android.os.Bundle;
    导入android.view.view;
    导入android.widget.AdapterView;
    导入android.widget.AdapterView.OnItemClickListener;
    导入android.widget.ListView;
    公共类测试扩展了活动{
    公共地图用户数据;
    公共静态列表用户列表;
    字符串[]name={“name\u one”、“name\u two”、“name\u three”、“name\u four”、“name\u five”};
    字符串[]lastName={“lastName\u one”、“lastName\u two”、“lastName\u three”、“lastName\u four”、“lastName\u five”};
    字符串[]电话号码={“电话号码1”、“电话号码2”、“电话号码3”、“电话号码4”、“电话号码5”};
    字符串[]mobileNumber={“mobileNumber_one”、“mobileNumber_two”、“mobileNumber_two”、“mobileNumber_two”、“mobileNumber_two”、“mobileNumber_four”、“mobileNumber_five”};
    字符串[]skypeUserName={“skypeUserName\u 1”、“skypeUserName\u 2”、“skypeUserName\u 3”、“skypeUserName\u 4”、“skypeUserName\u 5”};
    字符串[]email={“email\u one”、“email\u two”、“email\u three”、“email\u three”、“email\u three”、“email\u three”};
    @凌驾
    创建时的公共void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    userList=newarraylist();
    
    对于(int i=0;我不清楚这个问题……请您更清楚地指定。您正在列表视图中显示数组中的数据。单击每个项目时,您希望执行什么…?我正在尝试这样做-当我从列表视图中选择名称时,我希望它打开一个活动Bajzelj。然后根据我选择的名称,我希望o填写个人日期(每个人有不同的数据).对于活动Bajzelj,我只想使用一个具有空TextView和ImageView的xml。好的,我理解您的要求。您遇到的问题是..在准备xml文件或获取特定数据时。在获取特定数据时。它始终只显示第一人称数据,即使我从listview中选择第二人称,它也会显示再次重复相同的数据。谢谢,代码片段正是我所需要的。用户数据字段包括:姓名和姓氏、电话号码、手机号码、skype用户名、电子邮件。@user925185从哪里获取这些数据?从每个字段的数组或其他方式获取..?我自己将它们放入其中。我为每个人都提供了一个包含所有数据的函数对于那个人。我只需要弄清楚如何记住意图决定(我选择了哪个名称)并打开正确的一个。非常感谢。我欠你几杯啤酒:)…只有一件事不起作用,就是行中的userList-name.setText((String)((Map)Test.userList.get(position)).get(“name”)有问题;我已经在我的系统上进行了测试,一切正常…你有没有发现任何错误。。。?
    package com.test;
    
    import java.util.List;
    import java.util.Map;
    import android.app.Activity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    
    public class ListCustAdapter extends BaseAdapter {
        public Activity context;    
        private List<Object> list;
    
        public ListCustAdapter(Activity context, List<Object> list) {
            super();
            this.context = context;
            this.list = list;       
        }
    
        @Override
        public int getCount() {
            return list.size();
        }
    
        @Override
        public Object getItem(int position) {
            return null;
        }
    
        @Override
        public long getItemId(int position) {
            return 0;
        }
    
        @SuppressWarnings("unchecked")
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            TextView tv = new TextView(context);
            tv.setText((String) ((Map<String, Object>) list.get(position)).get("name"));
            return tv;
        }
    }
    
    <?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"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello"
        />
    
      <ListView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:id = "@+id/list"
        />
    
    </LinearLayout>
    
    <?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"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:id = "@+id/name"/>
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:id = "@+id/last_name"/>
        <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:id = "@+id/telephoneNumber"/>
        <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:id = "@+id/mobileNumber"/>
        <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:id = "@+id/skypeUserName"/>
        <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:id = "@+id/email"/>
    
    
    </LinearLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.test"
          android:versionCode="1"
          android:versionName="1.0">
    
    
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".Test"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
             <activity android:name=".Test2"/>
        </application>
    </manifest>