2014-11-01 16 views
0

我有這種自定義的ListView與ArrayList和我試圖打開第二個活動是利用 所用的圖標是文件夾繪製的Android定製的ListView與ArrayList中我如何打開第二個活動

setOnItemClickListener(new OnItemClickListener() {} 

但力關閉應用程序時,我點擊列表項 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 這是自定義列表適配器文件

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

,這是一個包含ListView控件設計

<?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> 
+0

請參閱日誌貓,並告訴我們它說當力停止發生 – 2014-11-01 00:23:09

+0

[錯誤的logcat的圖片](http://puu.sh/cygrJ/c2b154364a.png) – 2014-11-01 00:30:42

回答

0

從您的日誌貓看,錯誤似乎是因爲您使用的theme不是從compat。檢查您的manifest,並確保您使用compat主題。

例(在你的應用ALL acitivities):

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

或者,如果你只使用於特定活動的操作欄:

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

TIPS:

平時要注意log cat,特別是caused by。我從那裏知道問題。

+0

是的,它的工作原理和感謝您的幫助,但我希望操作欄我如何獲得操作欄菜單我相信您必須使用android:theme =「@ android:style/Theme.Holo.Light」主題才能顯示操作欄 – 2014-11-01 02:43:05

+0

您的活動應擴展ActionBarActivity而不是Activity – 2014-11-01 06:15:36

0

這將有很大的幫助,如果您發佈的錯誤輸出的XML文件。您的其他活動是否在您的清單中聲明?你已經在適配器中有一個上下文,所以你可以在那裏設置並嘗試。我也認爲View vi是不必要的,你可以使用convertView。

+0

是的,他們是 基本上我有此列表視圖與字符串 String [] listItems = {「Menu One」,「Menu Two」,「Menu Three」}; 和使用ListViewItems ArrayList我添加了項目列表的縮略圖,我想獲得用戶點擊項目一列表視圖的意圖,並打開另一個活動 – 2014-11-01 02:04:44

相關問題