简体   繁体   English

带有ArrayList的Android自定义ListView如何打开第二个活动

[英]Android Custom ListView with ArrayList How do I open a second activity

I have this Custom ListView with ArrayList and I am trying to Open second Activity Using the Icon Used is in the folder drawable 我有这个带有ArrayList的Custom ListView,我正在尝试使用可绘制的文件夹中使用的图标打开第二个活动

setOnItemClickListener(new OnItemClickListener() {}

but it force closes the app when I click on the ListItem CbMain.java 但是当我单击ListItem CbMain.java时,它会强制关闭应用程序

package com.frostistudios.circuitbasicspro;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

public class CbMain extends Activity {

String[] listItems = {"Menu One","Menu Two","Menu Three"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cb_main);



    ListView lv = (ListView) findViewById(R.id.listView); //listview in xml file
    List<ListViewItem> items = new ArrayList<CbMain.ListViewItem>();

    lv.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View v, int position,
                long id) {
            if(position == 0){
                //call to custom method for opening activity
                openItemOneActivity();
            }
            else if(position == 1){
                openItemTwoActivity();
            }
            else if(position == 2){
                openItemThreeActivity();
            }

        }
    });


    items.add(new ListViewItem()
    {{
        ThumbnailResource = R.drawable.ic_action_call;
        Title = listItems[0];
        SubTitle = "";


    }});
        items.add(new ListViewItem()
    {{
        ThumbnailResource = R.drawable.ic_action_call;
        Title = listItems[1];
        SubTitle = "";


    }});
        items.add(new ListViewItem()
    {{
        ThumbnailResource = R.drawable.ic_action_call;
        Title = listItems[2];
        SubTitle = "";


     }});

        CustomListViewAdapter adapter = new CustomListViewAdapter(this, items);
        lv.setAdapter(adapter);
}

  //custom methods to open another activity
public void openItemOneActivity(){
    Intent intent = new Intent(this,ItemOneActivity.class);
    startActivity(intent);
} 
public void openItemTwoActivity(){
    Intent intent = new Intent(this,ItemTwoActivity.class);
    startActivity(intent);
} 
public void openItemThreeActivity(){
    Intent intent = new Intent(this,ItemThreeActivity.class);
    startActivity(intent);
} 

class ListViewItem {
    public int ThumbnailResource;
    public String Title;
    public String SubTitle;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    //getMenuInflater().inflate(R.menu.actionbar, menu);
    //return super.onCreateOptionsMenu(menu);
    return true;


}


}

CustomListViewAdapter.java this is the custom list adapter file CustomListViewAdapter.java,这是自定义列表适配器文件

package com.frostistudios.circuitbasicspro;

import java.util.List;
import com.frostistudios.circuitbasicspro.CbMain.ListViewItem;
import android.app.Activity;  
import android.content.Context;
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.BaseAdapter;  
import android.widget.ImageView;  
import android.widget.ListView;
import android.widget.TextView;  

public class CustomListViewAdapter extends BaseAdapter
{  

LayoutInflater inflater;
List<ListViewItem> items;

public CustomListViewAdapter(Activity context, List<ListViewItem> items) {  
    super();

    this.items = items;
    this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override  
public int getCount() {  
    // TODO Auto-generated method stub  
    return items.size();  
}  

@Override  
public Object getItem(int position) {  
    // TODO Auto-generated method stub  
    return null;  
}  

@Override  
public long getItemId(int position) {  
    // TODO Auto-generated method stub  
    return 0;  
}

@Override  
public View getView(final int position, View convertView, ViewGroup parent) {  
    // TODO Auto-generated method stub  

    ListViewItem item = items.get(position);

    View vi=convertView;

    if(convertView==null)
        vi = inflater.inflate(R.layout.item_row, null);

        ImageView imgThumbnail = (ImageView) vi.findViewById(R.id.imgThumbnail);
        TextView txtTitle = (TextView) vi.findViewById(R.id.txtTitle);
        TextView txtSubtitle = (TextView) vi.findViewById(R.id.txtSubTitle);

        imgThumbnail.setImageResource(item.ThumbnailResource);
        txtTitle.setText(item.Title);
        txtSubtitle.setText(item.SubTitle);


    return vi;  
}
}

and this is the XML File that holds the ListView Design 这是保存ListView设计的XML文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/imgThumbnail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/ic_action_call" 
    android:layout_marginLeft="10dp"
    android:layout_marginTop="2dp"/>

<TextView
    android:id="@+id/txtTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/imageView1"
    android:layout_toRightOf="@+id/imageView1"
    android:text="Large Text"
    android:layout_marginLeft="60dp"
    android:layout_marginTop="6dp"/>

<TextView
    android:id="@+id/txtSubTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageView1"
    android:layout_alignLeft="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:text="" />

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/textView1"
    android:src="@drawable/arrow" />

</RelativeLayout>

It would help a lot if you posted the error output. 如果您发布错误输出,将会很有帮助。 Are your other Activities declared in your manifest? 清单中是否声明了您的其他活动? You already have a context in the adapter, so you could set it there and try. 您已经在适配器中具有上下文,因此可以在其中设置上下文并尝试。 I also think that View vi is unecessary, you can use convertView. 我也认为View vi是不必要的,可以使用convertView。

Looking from your log cat, the error seems because the theme you used is not from the compat . 从您的原木猫看,出现错误似乎是因为您使用的theme不是来自compat Check your manifest , and make sure you use the compat theme. 检查manifest ,并确保使用compat主题。

Example (for ALL acitivities in your apps) : 示例(适用于您应用中的所有活动):

<application
        //other code
        android:theme="@style/Theme.AppCompat.Light" >

Or if you only use the action bar on particular activity : 或者,如果您仅对特定活动使用操作栏:

<Activity
        //other code
        android:theme="@style/Theme.AppCompat.Light" >

TIPS : 提示 :

Always pay attention to the log cat , especially the caused by . 经常注意log cat ,尤其是caused by I know the problem from there. 我从那里知道问题所在。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在单独的活动中打开自定义 ListView 项目? - How can I open A Custom ListView Item in A separate Activity? Android ArrayList到ListView进行搜索活动 - Android ArrayList to ListView for search activity 如何在Android的第二个活动中显示信息 - How do I display information in my second activity in Android 在Android中离开活动后如何保留我的列表视图? - How do I retain my listview after leaving the activity in android? Android-我无法在第二次活动中创建ListView - Android- I can't make the ListView on second activity 如何在Android中单击列表视图打开图像? - How do i open an image by clicking on a listview in android? 如何获得在Android Studio中打开新活动的按钮? - How do i get a button to open a new activity in android studio? 如何直接打开非主要活动的Android应用程序,然后再转到主要活动? - How do I open an Android app straight to an activity that is not the main activity and later move to the main activity? 如何单击 ListView 项目并打开引用我单击的项目的活动? - How do I click on a ListView item and open an Activity referring to the item I clicked on? 如何将第二个活动中的RecyclerView项目传递给Android中的上一个活动? - How do I pass a RecyclerView item in the second Activity to the previous Activity in Android?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM