-1

我正在使用 xml 创建一个编辑文本文件,并使用 enumerator 在 listview 的适配器类 .im 中添加它。通过这个我能够创建两个具有相同 id 的文本字段。问题是如何从两个文本字段中获取字符串因为他们共享相同的 id。下面是代码。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View rowView = null;

    AddKeywordRow row = keywordRows.get(position);

    switch (row.getRowType()) {
    case TitleRow:
        rowView = inflater.inflate(R.layout.titlerow, null);
        TextView txtTitle = (TextView) rowView.findViewById(R.id.rowtitle);
        txtTitle.setText(row.getMessage());
        break;
    case EditRow:
        rowView = inflater.inflate(R.layout.editrow, null);
        txtInput = (EditText) rowView.findViewById(R.id.rowedit);
        txtInput.setHint(row.getMessage());
        if (row.getHeight() != 0)
        {
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                     LinearLayout.LayoutParams.MATCH_PARENT,row.getHeight());
            txtInput.setLayoutParams(layoutParams); 
            layoutParams.setMargins(7, 0, 7,0);
        //txtInput.setLayoutParams(new LinearLayout.LayoutParams(
            //      LinearLayout.LayoutParams.MATCH_PARENT, row.getHeight()));
            txtInput.setPadding(3,0,0,30);  
        }
        // set padding and margin
        break;
    case MessageRow:
        rowView = inflater.inflate(R.layout.messagerow, null);
        TextView txtMessage = (TextView) rowView
                .findViewById(R.id.rowmessage);
        txtMessage.setText(row.getMessage());
        break;
    case ButtonRow:
        rowView = inflater.inflate(R.layout.buttonrow, null);
        Button btn = (Button)rowView.findViewById(R.id.button1);

        btn.setOnClickListener(new OnClickListener() {


        }
        });

        break;
    }

    return rowView;
}
4

2 回答 2

0

通过列表行检索它们,例如(伪代码):

((EditText)getAdapter().getItem(id)).getText()

于 2012-12-07T12:37:36.447 回答
0

首先,我建议您对列表项使用Holder 模式。其次覆盖 getItem(int position); 在您的适配器中,以便它根据位置返回必要的文本值。例如,您将能够在您的活动中的 onItemclickListener() 中使用它。

@Override
    public String getItem(int position) {
        return keywordRows.getMessage(position);
    }

你的 onItemClickListener 看起来像:

private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long rowid) {
            String message = (String)adapterView.getItemAtPosition(position);
        }
    }
于 2012-12-07T12:34:14.333 回答