Java Android如何在CustomAdapter中用自定义relativelayout替换R.layout.id?

Java Android如何在CustomAdapter中用自定义relativelayout替换R.layout.id?,java,android,android-layout,android-relativelayout,android-inflate,Java,Android,Android Layout,Android Relativelayout,Android Inflate,在这里,我想使用我以编程方式创建的RelativeLayout来代替R.layout.row\u ten\u单词 我要使用的代码是: ViewHolder holder = null; if (convertView == null) { LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

在这里,我想使用我以编程方式创建的RelativeLayout来代替R.layout.row\u ten\u单词

我要使用的代码是:

        ViewHolder holder = null;

        if (convertView == null) {

            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = vi.inflate(R.layout.row_ten_words,null);

            holder = new ViewHolder();
            holder.txtSrc = (EditText) convertView.findViewById(R.id.txt_src_word);
            holder.btnTranslate = (Button) convertView.findViewById(R.id.btn_translate);
            holder.txtDes = (EditText) convertView.findViewById(R.id.txt_des_word);}`
我对android完全陌生,但对JAVA很了解。如果我的方法错了,请给我一些建议


提前感谢。

您实际上是在用动态视图创建替换视图的膨胀。要以编程方式创建视图,需要
上下文
引用。您将需要添加一个类成员并在适配器的构造函数中设置它(这可能与您的不完全相同,但您已经了解了):

然后:

Context context;

public SomeAdapter(Context context, int resource)
{
    super(context, resource);

    this.context = context;
    ...
    ...

创建一个新的布局文件,保存在布局文件夹中,然后在此处传递引用,例如R.layout。您的\u layout\u名称。@Brontok我需要在scratch中创建此布局。设计应该使用代码。感谢您的回答,但是在convertView=rl中没有为View@MikeClassCastException定义方法addView;嗯,好的..我是android新手..任何建议都将不胜感激..谢谢你的帮助03-13 06:18:11.417:E/AndroidRuntime(2351):java.lang.ClassCastException:android.widget.RelativeLayout$LayoutParams不能强制转换为android.widget.AblistView$LayoutParams 03-13 06:18:11.417:E/AndroidRuntime(2351):在android.widget.ListView.measureScrapChild(ListView.java:1167)03-13 06:18:11.417:E/AndroidRuntime(2351):在03-13 06:18:11.417:E/AndroidRuntime(2351):在android.view.view.measure(view.java:15848)03-13 06:18:11.417:E/AndroidRuntime(2351):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)03-13 06:18:11.4103-13 07:23:28.997:E/AndroidRuntime(2939):java.lang.ClassCastException:android.view.ViewGroup$LayoutParams不能强制转换为android.widget.RelativeLayout$LayoutParams 03-13 07:23:28.997:E/AndroidRuntime(2939):在android.widget.RelativeLayout$DependencyGraph.findRoots(RelativeLayout.java:1723)
Context context;

public SomeAdapter(Context context, int resource)
{
    super(context, resource);

    this.context = context;
    ...
    ...
if (convertView == null)
{
    EditText txtSrc = new EditText(context);
    EditText txtDes = new EditText(context);
    Button btnTranslate = new Button(context);
    btnTranslate.setText("translate");

    rl = new RelativeLayout(context);
    rl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    rl.addView(txtSrc);
    rl.addView(btn_translate);
    rl.addView(txtDes);

    holder = new ViewHolder();
    holder.txtSrc = txtSrc;
    holder.btnTranslate = btnTranslate;
    holder.txtDes = txtDes;

    convertView = rl;
}