Edittext仅将第一项添加到arraylist <string> </string>

时间:2012-02-08 23:39:53

标签: android listview arraylist android-edittext

我对这个失败了。尝试从列表视图中获取edittext并将它们放入arraylist以用于其他活动。

public class editpage extends ListActivity {
    public static String editString;
    private dbadapter mydbhelper;
    public static ArrayList<String> editTextList = new ArrayList<String>();


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_list);
        mydbhelper = new dbadapter(this);
        mydbhelper.open();
        fillData();
    }



    public void fillData() {


        Cursor e = mydbhelper.getUserWord();
            startManagingCursor(e);


        String[] from = new String[] {dbadapter.KEY_USERWORD,};

        int[] to = new int[] {R.id.textType,};


       SimpleCursorAdapter editadapter = 
       new SimpleCursorAdapter(this, R.layout.edit_row, e, from, to);
       ListView list = getListView();
       View footer = getLayoutInflater().inflate(R.layout.footer_layout, list, false);
       list.addFooterView(footer);
       setListAdapter(editadapter);

                }






    public void onClick(View footer){
            final MediaPlayer editClickSound = MediaPlayer.create(this, R.raw.button50);
            final EditText editText = (EditText) findViewById(R.id.editText);
            for (int i = 0; i < getCount(); i++){
            editTextList.add(editText.getText().toString());
                        }
            editClickSound.start();
            startActivity(new Intent("wanted.pro.madlibs.OUTPUT"));
                    };







//can't get my getcount to work dynamically. I want it to be based off how many items are shown in next code showing my cursor but can't get to work atm unless I set statically to prevent errors and move to next activity
private int getCount() {
        // TODO Auto-generated method stub
        return 10;
    }



Cursor to filter data pulled from database

  public  Cursor getUserWord() 
        {
            return myDataBase.query(USER_WORD_TABLE, new String[] {
                    KEY_ID, 
                    KEY_CATEGORY,
                    KEY_SOURCE, KEY_TITLE, KEY_USERWORD 
                    }, 
                    KEY_CATEGORY+ "=" + categories.categoryClick + " AND " + KEY_SOURCE+ "=" 
                    +source.sourceClick + " AND " + KEY_TITLE+ "=" + title.titleClick, 
                    null, null, null, KEY_ID);

用于过滤数据库中的数据以在listview中显示的光标

      public  Cursor getUserWord() 
        {
            return myDataBase.query(USER_WORD_TABLE, new String[] {
                    KEY_ID, 
                    KEY_CATEGORY,
                    KEY_SOURCE, KEY_TITLE, KEY_USERWORD 
                    }, 
                    KEY_CATEGORY+ "=" + categories.categoryClick + " AND " + KEY_SOURCE+ "=" 
                    +source.sourceClick + " AND " + KEY_TITLE+ "=" + title.titleClick, 
                    null, null, null, KEY_ID);
        }

我的下一个活动是显示与我的数据库中的字符串合并的edittext。我使用此字符串并将edit01,edit02等替换为上一个活动的edittext字段中的用户输入

public class output extends ListActivity {
    private dbadapter mydbhelper;
    @Override
    public void onCreate(Bundle savedInstantState){
        super.onCreate(savedInstantState);
        setContentView(R.layout.outview);
        mydbhelper = new dbadapter(this);
        mydbhelper.open();
        fillData();
        }

private final Runnable mTask = new Runnable(){
    public void run(){
        TextView textView = (TextView)findViewById(R.id.outputText);
        String story = textView.getText().toString();
CharSequence modifitedText1 = Replacer.replace(story, 
            "edit01", Html.fromHtml("<font color=\"red\">"+ editpage.editTextList.get(0) +"</font>"));
CharSequence modifitedText2 = Replacer.replace(modifitedText1, 
        "edit02", Html.fromHtml("<font color=\"red\">"+ editpage.editTextList.get(1) +"</font>"));
textView.setText(modifitedText2);
    }
};
private final Handler mHandler = new Handler();


    private void fillData() {

        Cursor st = mydbhelper.getStory();
            startManagingCursor(st);


        String[] from = new String[] {dbadapter.KEY_TITLESTORY};

        int[] to = new int[] {R.id.outputText};


        SimpleCursorAdapter adapter = 
            new SimpleCursorAdapter(this, R.layout.out_row, st, from, to);
        setListAdapter(adapter);
        }
    @Override
    protected void onResume() {
        mydbhelper.open();
        mHandler.postDelayed(mTask, 10);
        super.onResume();
    }

    @Override
    protected void onPause() {
        mydbhelper.close();
        super.onPause();
    }


}

我可以让这个工作最远的是一个项目。我将在这里展示的第一个活动中有4-10个edittexts。但无论我尝试过什么,它都只显示输入第一个edittext字段的文本。在它的当前状态下它将填充edit01&amp;来自数据库的字符串中的edit02,其中包含上一个活动中第一个edittext中的内容。

1 个答案:

答案 0 :(得分:0)

终于能够在不改变太多的情况下实现这一点。我不得不与它斗争并尝试一堆东西。如果有人尝试这样的话,我会分享答案。它归结为更改(R.id.editText)以拥有自己的唯一ID。

private void editId(){
    if(findViewById(R.id.editText) == null){

    }else{

    for(int editI= 0; editI<getCount(); editI++){
        EditText editText = (EditText) findViewById(R.id.editText);
        editText.setId(editI);
        m_edit.add(editI, editText);
    }}
}

并在我的onclick中调用editId()作为我的页脚按钮

我必须将我的runnable改为动态工作,但这是另一个问题。