通过单击每个listview项目行调用不同的不同列表视图

时间:2012-10-16 05:43:37

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

我正在创建一个应用程序,其中我使用xml解析器将数据导入listview,并使用每个listview项目行,我需要打开另一个列表视图,我能够打开另一个列表视图,但每当我调用另一个列表视图然后我是每次我没有得到所需列表视图的视图我得到第一个列表视图的视图与一些字段名称只有那些匹配在列表视图中如:标题和描述,我尝试了很多方法,但仍然无法解决这个问题,有人指导我如何实现我的目标。 Noe: - 我正在使用不同的不同视图,对于列表视图中的每个单击项目行,如: - 在某些列表视图中,我只使用textviews,imageview,imagebutton以及我正在使用textviews,imageview,imagebutton和复选框的地方。我知道如何使用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);
                    }
                                }



        });     
    }   
}

1 个答案:

答案 0 :(得分:0)

通常你有类似

的东西
mListView.setOnItemClickListener(new OnItemClickListener() {

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

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