滚动视图以像列表视图一样,从数据库设置textview

时间:2012-02-27 05:45:02

标签: android database cursor textview scrollview

我正试图从列表视图中移开我的一个活动,其中TextView和Edittext彼此相邻。 listview中的Edittext让我很麻烦我试图让我的滚动视图看起来像列表视图但没有任何回收问题。我已经设置了一个布局(不是100%我希望它看起来像)但是现在我想用从数据库中提取的数据填充我的textview,我在这里打了一堵墙。这是我到目前为止所拥有的......

public class inputpage extends Activity {
    public static int editCount = 10; //needs to be dynamic based on how many items the cursor pulls but using 10 till I have more code in place 
    public LinearLayout editlayout;
    static Map<Integer, String> inputValues = new LinkedHashMap<Integer, String>();
    @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.inputlayout);
    editlayout=(LinearLayout) this.findViewById(R.id.editlayout);

    buildRow();



}

    public void buildRow(){
        LayoutParams textparam = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        LayoutParams editparam = new LayoutParams(350, LayoutParams.WRAP_CONTENT);
        textparam.setMargins(2, 2, 2, 2);

        for (int i = 0; i < editCount; i++){
            //textview
            TextView tv=new TextView(this);
            tv.setLayoutParams(textparam);
            tv.setText("test");
            tv.setTextSize(35);
            tv.setTextColor(getResources().getColor(R.color.black));
            this.editlayout.addView(tv);
            //edittext
            EditText edit = new EditText(this);
            edit.setLayoutParams(editparam);
            this.editlayout.addView(edit);
            edit.setId(editCount);
            edit.addTextChangedListener(new TextWatcher(){
            public void afterTextChanged(Editable editable) {
                Log.e(String.valueOf(editCount), "Position in array");
                inputValues.put(editCount, editable.toString());
                Log.e(editable.toString(), "added to array");

            }
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                // TODO Auto-generated method stub

            }
        });

        }}
}

我之前使用的代码是....

public class editpage extends ListActivity {
    private dbadapter mydbhelper;
    private PopupWindow pw;
    public static SimpleCursorAdapter editadapter;
    public static ArrayList<String> editTextList = new ArrayList<String>();
    private ArrayList<EditText> m_edit = new ArrayList<EditText>();
    public static Map<Integer,String> myList=new LinkedHashMap<Integer,String>();

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

        }

    }
    //size of adapter and arrays
    public static int getCount(){
        return editadapter.getCount();
    }

    public void fillData() {
    Cursor e = mydbhelper.getUserWord();
        startManagingCursor(e);
        String[] from = new String[] {dbadapter.KEY_USERWORD,};
        int[] to = new int[] {R.id.textType,};
       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);}

                }

我找不到任何关于如何做到这一点的好资源,所以我希望这里有人知道我可以建立的链接或一些模拟代码。

1 个答案:

答案 0 :(得分:0)

好了我一段时间,但我得到了所以我想我会张贴,以防其他人需要这些信息bc我花了一段时间来寻找方向以获得正确的方向。请注意,我更改为tablelayout以获得接近我需要的布局的东西。

public class inputpage extends Activity {

    public TableLayout tl;
    static Map<Integer, String> inputValues = new LinkedHashMap<Integer, String>();
    private dbadapter mydbhelper;
    public static int editCount;
    public Cursor cursor;

    @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    mydbhelper = new dbadapter(this);
    mydbhelper.open();
    setContentView(R.layout.tablelayout);
    tl=(TableLayout) this.findViewById(R.id.table);
    cursor = mydbhelper.getUserWord();
    editCount = cursor.getCount();
    buildRow();






    }
    public void buildRow(){

        LayoutParams textparam = new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
        LayoutParams editparam = new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
        textparam.setMargins(2, 2, 2, 2);
        LayoutParams rowparam = new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
        cursor.moveToFirst();
        for (int i = 0; i < editCount; i++){
            TableRow tr = new TableRow(this);
            tr.setLayoutParams(rowparam); 

            //textview
            TextView tv=new TextView(this);
            tv.setLayoutParams(textparam);
            tv.setText(cursor.getString(cursor.getColumnIndex("userword")));
            tv.setTextSize(35);
            tv.setGravity(Gravity.CENTER);
            tv.setTextColor(getResources().getColor(R.color.black));
            tr.addView(tv);

            //edittext
            EditText edit = new EditText(this);
            edit.setLayoutParams(editparam);
            tr.addView(edit);
            edit.setId(editCount);
            edit.addTextChangedListener(new TextWatcher(){
            public void afterTextChanged(Editable editable) {
                //unfinished and confirmed to work atm
                            Log.e(String.valueOf(editCount), "Position in array");
                inputValues.put(editCount, editable.toString());
                Log.e(editable.toString(), "added to array");


            }
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                // TODO Auto-generated method stub

            }
        });
            cursor.moveToNext();
            tl.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
        }}

}