2013-07-10 4 views
0

누군가가 도움을 줄 수 있으면 지금이 코드로 며칠 동안 놀았습니다. 하나의 레이아웃에 10 개의 imagebutton이 있습니다. 버튼을 클릭 할 때마다 처리됩니다. 버튼이 클릭되었을 때 listview가 있어야합니다. Ridcully에서 좋은 코드가 있습니다. Listview On Multiple Button Clicks. 난 그냥 내가 그것을 버튼 클릭 작동하지만 목록보기를 시작할 때사례 명세서에 목록보기 추가하기

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에서 오류가 발생합니다. listview에 캐스팅을 추가하고 setadapter로 변경하십시오. – coolcat

+0

어떤 이유인지 이제는 작동합니다. listView가 작동합니다. .setAdapter (어댑터); – coolcat

+0

그냥 표준으로 보이기 때문에 listview가 더 좋아 보이게 만들 필요가 있습니다 – coolcat

관련 문제