Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用我创建的列表视图。安卓_Android_Listview - Fatal编程技术网

Android 使用我创建的列表视图。安卓

Android 使用我创建的列表视图。安卓,android,listview,Android,Listview,我正在尝试使用列表视图,我已经成功创建了一个列表视图,它工作得非常好。然而,它在一个新的屏幕上创造了自己。我想知道如何在主菜单中使用已经创建的列表视图(由main.xml定义) 我的Java代码: public class Option2Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle sav

我正在尝试使用列表视图,我已经成功创建了一个列表视图,它工作得非常好。然而,它在一个新的屏幕上创造了自己。我想知道如何在主菜单中使用已经创建的列表视图(由main.xml定义)

我的Java代码:

public class Option2Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Intent startNewActivityOpen = new Intent(Option2Activity.this, ListViewActivity.class);
        startActivityForResult(startNewActivityOpen, 0);
    }
}


public class ListViewActivity extends ListActivity
{
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        ListView lv = (ListView)findViewById(R.id.listview_main);
        // Currently unused... 

        Context ctx = getApplicationContext();
        Resources res = ctx.getResources();

        String[] options = res.getStringArray(R.array.list_titles);
        TypedArray icons = res.obtainTypedArray(R.array.list_icons);

        setListAdapter(new Adapter(ctx, R.layout.list_item, options, icons));
        //I tried using lv.setAdapter(new Adapter(ctx, R.layout.list_item, options, icons));
        //but it didn't work. 'setListAdapter' is creating a new listview in another screen

    }
}

public class Adapter extends ArrayAdapter<String> {

    private LayoutInflater mInflater;
    private String[] mStrings;
    private TypedArray mIcons;

    private int mViewResourceId;

    public Adapter(Context ctx, int viewResourceId, String[] strings, TypedArray icons) 
    {   
        super(ctx, viewResourceId, strings);

        mInflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        mStrings = strings;
        mIcons = icons;
        mViewResourceId = viewResourceId;
    }

    @Override
    public int getCount() 
    {
        return mStrings.length;
    }

    @Override
    public String getItem(int position) 
    {
        return mStrings[position];
    }

    @Override
    public long getItemId(int position) 
    {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        convertView = mInflater.inflate(mViewResourceId, null);

        Button ib = (Button)convertView.findViewById(R.id.list_button);
        ib.setText(mStrings[position]);
        ib.setCompoundDrawables((mIcons.getDrawable(position)), null, null, null);
            //this doesn't work either, it is supposed to set an image in the button
            //if anyone knows how to help me I'd appreciate but it isn't the main issue

        TextView tv = (TextView)convertView.findViewById(R.id.list_text);
        tv.setText(mStrings[position]);

        return convertView;
    }
}
与最新用户的回复不完全相同。但它奏效了。不需要ListViewActivity


谢谢论坛。

删除
ListViewActivity
活动只需使用我下面给出的活动

public class Option2Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       ListView lv = (ListView)findViewById(R.id.listview_main);
        // Currently unused... 

        Context ctx = getApplicationContext();
        Resources res = ctx.getResources();

        String[] options = res.getStringArray(R.array.list_titles);
        TypedArray icons = res.obtainTypedArray(R.array.list_icons);

        lv.setListAdapter(new Adapter(ctx, R.layout.list_item, options, icons));

    }

    public class Adapter extends ArrayAdapter<String> {

    private LayoutInflater mInflater;
    private String[] mStrings;
    private TypedArray mIcons;

    private int mViewResourceId;

    public Adapter(Context ctx, int viewResourceId, String[] strings, TypedArray icons) 
    {   
        super(ctx, viewResourceId, strings);

        mInflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        mStrings = strings;
        mIcons = icons;
        mViewResourceId = viewResourceId;
    }

    @Override
    public int getCount() 
    {
        return mStrings.length;
    }

    @Override
    public String getItem(int position) 
    {
        return mStrings[position];
    }

    @Override
    public long getItemId(int position) 
    {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        convertView = mInflater.inflate(mViewResourceId, null);

        Button ib = (Button)convertView.findViewById(R.id.list_button);
        ib.setText(mStrings[position]);
        ib.setCompoundDrawables((mIcons.getDrawable(position)), null, null, null);
            //this doesn't work either, it is supposed to set an image in the button
            //if anyone knows how to help me I'd appreciate but it isn't the main issue

        TextView tv = (TextView)convertView.findViewById(R.id.list_text);
        tv.setText(mStrings[position]);

        return convertView;
    }

}
公共类选项2活动扩展活动{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView lv=(ListView)findViewById(R.id.ListView\u main);
//当前未使用的。。。
Context ctx=getApplicationContext();
Resources res=ctx.getResources();
String[]options=res.getStringArray(R.array.list_titles);
TypedArray图标=res.obtainTypedArray(R.array.list_图标);
lv.setListAdapter(新适配器(ctx、R.layout.list_项、选项、图标));
}
公共类适配器扩展了ArrayAdapter{
私人停车场;
私有字符串[]mStrings;
私有型Darray mIcons;
私有int-mViewResourceId;
公共适配器(上下文ctx、int-viewResourceId、字符串[]字符串、类型Darray图标)
{   
超级(ctx、viewResourceId、字符串);
mInflater=(LayoutInflater)ctx.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
mStrings=字符串;
mIcons=图标;
mViewResourceId=viewsourceid;
}
@凌驾
public int getCount()
{
返回mStrings.length;
}
@凌驾
公共字符串getItem(int位置)
{
返回mStrings[位置];
}
@凌驾
公共长getItemId(int位置)
{
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图)
{
convertView=mInflater.inflate(mViewResourceId,null);
按钮ib=(按钮)convertView.findViewById(R.id.list_按钮);
ib.setText(mStrings[位置]);
ib.setCompoundDrawables((mIcons.getDrawable(position)),null,null,null);
//这也不行,应该在按钮中设置一个图像
//如果有人知道如何帮助我,我会很感激,但这不是主要问题
TextView tv=(TextView)convertView.findViewById(R.id.list\u text);
tv.setText(mStrings[position]);
返回视图;
}
}

试试这个,

Option2Activity活动的用途是什么?第一个活动(主要活动)。与应用程序开始时一样。无需使用ListViewActivity活动。您可以在主活动中使用listview本身。使用我提供的代码。并让我知道发生了什么情况。工作正常,只需使用lv.setAdapter即可。谢谢。如果此答案对您有帮助,您可以通过单击下面的右符号接受正确答案在答案的左边,这将有助于你和其他用户也。。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView 
    android:id="@+id/list_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:textSize="24dp"
    android:padding="6dp" 
    />

    <Button
        android:id="@+id/list_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
    />


</LinearLayout>
public class Option2Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ListView lv = (ListView)findViewById(R.id.listview_main);


        Context ctx = getApplicationContext();
        Resources res = ctx.getResources();

        String[] options = res.getStringArray(R.array.list_titles);
        TypedArray icons = res.obtainTypedArray(R.array.list_icons);

        lv.setAdapter(new Adapter(ctx, R.layout.list_item, options, icons));

    }
}
public class Option2Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       ListView lv = (ListView)findViewById(R.id.listview_main);
        // Currently unused... 

        Context ctx = getApplicationContext();
        Resources res = ctx.getResources();

        String[] options = res.getStringArray(R.array.list_titles);
        TypedArray icons = res.obtainTypedArray(R.array.list_icons);

        lv.setListAdapter(new Adapter(ctx, R.layout.list_item, options, icons));

    }

    public class Adapter extends ArrayAdapter<String> {

    private LayoutInflater mInflater;
    private String[] mStrings;
    private TypedArray mIcons;

    private int mViewResourceId;

    public Adapter(Context ctx, int viewResourceId, String[] strings, TypedArray icons) 
    {   
        super(ctx, viewResourceId, strings);

        mInflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        mStrings = strings;
        mIcons = icons;
        mViewResourceId = viewResourceId;
    }

    @Override
    public int getCount() 
    {
        return mStrings.length;
    }

    @Override
    public String getItem(int position) 
    {
        return mStrings[position];
    }

    @Override
    public long getItemId(int position) 
    {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        convertView = mInflater.inflate(mViewResourceId, null);

        Button ib = (Button)convertView.findViewById(R.id.list_button);
        ib.setText(mStrings[position]);
        ib.setCompoundDrawables((mIcons.getDrawable(position)), null, null, null);
            //this doesn't work either, it is supposed to set an image in the button
            //if anyone knows how to help me I'd appreciate but it isn't the main issue

        TextView tv = (TextView)convertView.findViewById(R.id.list_text);
        tv.setText(mStrings[position]);

        return convertView;
    }

}