2013-07-10 24 views
0

如果有人可以幫忙,我一直在玩這個代碼幾天。我在一個佈局中有10個圖像按鈕,我有一個case語句中的所有按鈕點擊來照顧它們。我需要的是在單擊時在所有按鈕內部有一個listview。現在我有一些Ridcully的好代碼 Listview On Multiple Button Clicks。我似乎可以得到它的工作將列表視圖添加到Case語句

FirstActivity

   package com.example.testtest; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ImageButton; 
import android.widget.ListView; 

public class MainActivity extends Activity implements OnClickListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.layout_of_button); 
ImageButton btn1 = (ImageButton)findViewById(R.id.imageButton1); 
ImageButton btn2 = (ImageButton)findViewById(R.id.imageButton2); 
ImageButton btn3 = (ImageButton)findViewById(R.id.imageButton3); 
ImageButton btn4 = (ImageButton)findViewById(R.id.imageButton4); 
ImageButton btn5 = (ImageButton)findViewById(R.id.imageButton5); 
ImageButton btn6 = (ImageButton)findViewById(R.id.imageButton6); 
btn1.setOnClickListener(this); 
btn2.setOnClickListener(this); 
btn3.setOnClickListener(this); 
btn4.setOnClickListener(this); 
btn5.setOnClickListener(this); 
btn6.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    switch(v.getId()) { 
    // if one of the image buttons is pressed... 
    case R.id.imageButton1: 
    case R.id.imageButton2: 
    case R.id.imageButton3: 
    case R.id.imageButton4: 
    case R.id.imageButton5: 
    case R.id.imageButton6: 
     Intent intent = new Intent(this, Listviewact.class); 
     // pass ID of pressed button to listview-activity 
     intent.putExtra("buttonId", v.getId()); 
     startActivity(intent); 
     break; 
    // here you could place handling of other clicks if necessary...   
    } 
} 

    private void setListAdapter(ArrayAdapter<String> arrayAdapter) { 
// TODO Auto-generated method stub 

    } 

private ListView getListView() { 
// TODO Auto-generated method stub 
return null; 
    } 
} 

Listviewact

import android.app.Activity; 
    import android.os.Bundle; 
    import android.widget.ArrayAdapter; 
    import android.widget.ImageView; 
    import android.widget.ListView; 

    public class Listviewact extends Activity { 

public void onCreate(Bundle b) { 
    super.onCreate(b); 
    setContentView(R.layout.listview_layout); 
    } 

    public void onResume() { 
    super.onResume(); 
    int buttonId = getIntent().getIntExtra("buttonId", 0); 
    int buttonIdx = getButtonIdx(buttonId); 

    // find and set image according to buttonId 
    int imageId = IMAGE_IDS[buttonIdx];  // image to show for given button 
    ImageView imageView = (ImageView)findViewById(R.id.imageView1); 
    imageView.setImageResource(imageId); 

    // find and set listview imtes according to buttonId 
    String[] items = LISTVIEW_DATA[buttonIdx]; // listview items to show for given button 
    ListView listView = (ListView)findViewById(R.id.listView1); 
    ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, items); 
    setListAdapter(adapter); 
} 

private void setListAdapter(ArrayAdapter adapter) { 
    // TODO Auto-generated method stub 

} 

// a little helper to map ids to array indices 
// to be able to fetch the correct image and listview data later 
private final static int[] BUTTON_IDS = new int[] { 
    R.id.imageButton1, 
    R.id.imageButton2, 
    R.id.imageButton3, 
    R.id.imageButton4, 
    R.id.imageButton5, 
    R.id.imageButton6 
}; 

// 6 images 
private final static int[] IMAGE_IDS = new int[] { 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher 
}; 

// 6 different sets of strings for the listviews 
private final static String[][] LISTVIEW_DATA = new String[][] { 
    {"First A", "First B", "First C"}, 
    {"Second A", "Second B", "Second C"}, 
    {"Third A", "Third B", "Third C"}, 
    {"Forth A", "Forth B", "Forth C"}, 
    {"Fifth A", "Fifth B", "Fifth C"}, 
    {"Sixth A", "Sixth B", "Sixth C"}, 
}; 

// map button id to array index 
static private int getButtonIdx(int id) { 
    for(int i = 0; i<BUTTON_IDS.length; i++) { 
     if (BUTTON_IDS[i] == id) return i; 
    } 
    return 0; // should not happen 
} 
    } 

當我啓動的按鈕,點擊作品,但沒有列表視圖?

+1

是的,這是可能的。 –

+0

可以請詳細說明neknek – coolcat

+0

更改我的代碼希望它有幫助 – coolcat

回答

0

您必須使用listView.setListAdapter(adapter);,如我對上一個問題的答案的示例代碼所示。您正在調用您自己的setListAdapter方法,因此listView沒有適配器來從中獲取數據。

+0

當我添加上面它在setListAdapter下得到一個錯誤說添加投影到列表視圖和更改爲setadapter – coolcat

+0

由於某種原因,現在它的作品這是我有,它工作listView .setAdapter(適配器); – coolcat

+0

只需要使listview看起來更好,因爲它看起來只是標準 – coolcat