Редактировать текст, добавляя только первый элемент в список рассылки <string> - PullRequest
0 голосов
/ 09 февраля 2012

Я в растерянности с этим.Попытка взять edittext из представления списка и поместить их в массив списков для использования в другом действии.

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);

Курсор для фильтрации данных из базы данных для отображения в виде списка

      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);
        }

Следующим действием будет отображение текста редактирования, объединенного со строкой из моей базы данных.Я беру эту строку и заменяю 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 & edit02 в строке из базы данных тем, что было помещено в первый текст редактирования в предыдущем действии.

1 Ответ

0 голосов
/ 16 февраля 2012

Ну, наконец-то удалось заставить это работать без особых изменений. Я должен был бороться с этим и попробовать кучу вещей. Я подумал, что поделюсь ответом, если кто-то попробует что-то подобное. Дело дошло до изменения (R.id.editText), чтобы иметь свой собственный уникальный идентификатор.

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);
    }}
}

и вызов editId () в моем клике для кнопки нижнего колонтитула

Мне пришлось изменить свой работоспособный режим, чтобы он работал динамически, но это другая проблема.

...