Android:如何从表中获取textview位置

时间:2011-03-16 08:57:29

标签: android xml-parsing

在列表视图中,可以通过数组适配器轻松确定特定行的位置,然后使用onlistitemclick方法,我们可以在toast消息中获取该值

但是如何从表视图中获取任何特定文本视图的位置或id(当它被单击时),其中表行通过xml解析器动态生成.. 列名是id,name和class。 id自动递增.. 请建议。

代码是

尝试{

        /** Handling XML */
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();


        URL sourceUrl = new URL("http://ip-address/test/player.xml");


        MyXMLHandler myXMLHandler = new MyXMLHandler();
        xr.setContentHandler(myXMLHandler);
        xr.parse(new InputSource(sourceUrl.openStream()));

        } catch (Exception e) {
            System.out.println("XML Pasing Excpetion = " + e);
        }


    DataList dataList = XMLHandler.DataList;


    name = new TextView[dataList.getName().size()];
    class = new TextView[dataList.getName().size()];

    /** Set the result text in textview and add it to layout */
    for (int i = 0; i < DataList.getName().size(); i++) {

         TableRow tr = new TableRow(this);
         tr.setId(100+i);
         tr.setLayoutParams(new LayoutParams(
                 LayoutParams.FILL_PARENT,
                 LayoutParams.WRAP_CONTENT)); 

         // Create a TextView to house the name of the province
         name[i]= new TextView(this);
         name[i].setId(200+i);
         name[i].setText(dataList.getName().get(i));
         name[i].setTextColor(Color.WHITE);
         name[i].setLayoutParams(new LayoutParams(
                 LayoutParams.FILL_PARENT,
                 LayoutParams.WRAP_CONTENT));
         tr.addView(name[i]);

         class[i] = new TextView(this);
         class[i].setId(i);
         class[i].setText(dataList.getClass().get(i));
         class[i].setTextColor(Color.WHITE);
         class[i].setLayoutParams(new LayoutParams(
                 LayoutParams.FILL_PARENT,
                 LayoutParams.WRAP_CONTENT));
         tr.addView(class[i]);


        t1.addView(tr, new TableLayout.LayoutParams(
                 LayoutParams.FILL_PARENT,
                 LayoutParams.WRAP_CONTENT));
     }
}

1 个答案:

答案 0 :(得分:2)

调用ViewGroup方法:

public int indexOfChild (View child)
TableLayout上的

,其中child是TableRow。 TableRow应该可以通过

访问
public final ViewParent getParent ()
TableRow中的View视图

TableRow tableRow = (TableRow)mTextView.getParent();    

int index = -1;

if(parent != null){
    index = mTable.indexOfChild(tableRow);
}

if(index < 0){
    throw new IllegalStateException("TextView not found");
}

希望有所帮助,但我还没有测试过。