【问题标题】:call different-different listviews by click on each listview item row通过单击每个列表视图项目行来调用不同的列表视图
【发布时间】:2012-10-06 04:08:13
【问题描述】:

我正在制作一个应用程序,我在其中使用 xml 解析器将数据输入列表视图,并使用每个列表视图项目行我需要打开另一个列表视图,我可以打开另一个列表视图,但是每当我调用另一个列表视图时,我就是每次我获取带有某些字段名称的第一个列表视图的视图时都没有获得所需列表视图的视图,只有那些在两个列表视图中都匹配,例如:标题和描述,我已经尝试了很多方法,但仍然无法解决这个问题,有人指导我如何实现我的目标。 Noe:-我正在使用不同的视图,对于列表视图中的每个单击项目行,例如:- 在某些列表视图中,我只使用文本视图、图像视图、图像按钮,而在某处我使用文本视图、图像视图、图像按钮和复选框。我知道如何使用 listview 项目行调用另一个活动,并且我已经通过为每个项目列表使用单独的活动以及它们不同的不同 xmls 来尝试此代码:-

FancyItem.java 代码:-

public class FancyItem extends Activity {
// All static variables
static final String URL = "http://***.net/android/fabriclist.xml";
// XML node keys
static final String KEY_FANCY = "fancy"; // parent node
static final String KEY_TITLE = "title";
static final String KEY_DESCRIPTION = "desc";
static final String KEY_THUMB_URL= "thumb_url";
static final String KEY_TROUSERS = "trousers";
static final String KEY_JEANS = "jeans";
static final String KEY_SHIRTS = "shirts";


ListView fancy_list_view;
    LazyAdapter fancy_list_adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


ArrayList<HashMap<String, String>> fancyList = 
    new ArrayList<HashMap<String, String>>();

    XMLParser parser = new XMLParser();
    String xml = parser.getXmlFromUrl(URL); // getting XML from URL
    Document doc = parser.getDomElement(xml); // getting DOM element

    NodeList nl = doc.getElementsByTagName(KEY_FANCY);
    // looping through all list nodes <list>
    for (int i = 0; i < nl.getLength(); i++) {
        // creating new HashMap
        HashMap<String, String> map = new HashMap<String, String>();
        Element e = (Element) nl.item(i);
        // adding each child node to HashMap key => value
        map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
        map.put(KEY_DESCRIPTION, parser.getValue(e, KEY_DESCRIPTION));
        map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
        map.put(KEY_TROUSERS, parser.getValue(e, KEY_TROUSERS));
        map.put(KEY_JEANS, parser.getValue(e, KEY_JEANS));
        map.put(KEY_SHIRTS, parser.getValue(e, KEY_SHIRTS));


        // adding HashList to ArrayList
        fancyList.add(map);
    }


    fancy_list_view=(ListView)findViewById(R.id.list);

    // Getting adapter by passing xml data ArrayList
    fancy_list_adapter=new LazyAdapter(this, fancyList);        
    fancy_list_view.setAdapter(fancy_list_adapter);


    // Click event for single list row
    fancy_list_view.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) 
            {

                if(position==0)
                    {
        Intent in = new Intent(CustomizedListView.this, FancyItem.class);
                        startActivity(in);
                    }
                                }



        });     
    }   
}

【问题讨论】:

  • 如果应用程序崩溃,您能发布一些代码和 logcat 吗?
  • 乡绅,我已经发布了一些代码,我正在使用这个链接作为第一个列表视图,它是主要的列表视图,包含主要类型的面料链接:-androidhive.info/2012/02/… 我上传的代码需要调用当用户从主列表视图行中选择花哨的列表行时
  • 所以您想在点击项目时显示详细视图?
  • squires 可以给我您的电子邮件 ID,然后我可以向您解释我真正需要的每件事,您是对的,但还有更多的事情,如果没有问题,请给我您的电子邮件地址跨度>
  • ssmobileproductions[at]me.com(将 [at] 替换为 @)

标签: android android-layout android-intent android-emulator android-listview


【解决方案1】:

通常你有类似的东西

mListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long id) {
                ...
                //your logic here depending on position
                }

因此您可以使用位置变量来决定接下来要打开哪个列表视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多