2012-09-23 2 views
0

현재 목록이 필요한 프로젝트를 수행하고 있으며 목록의 특정 항목을 클릭하면 다른 목록 활동이 나타납니다. 하나의 listview 활동에서 다른 활동으로 이동하는 방법에 대한 해결책이 있습니까? 현재 http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/을 ListView의 참조로 사용하고 있습니다.목록보기 내 ListView 안드로이드 응용 프로그램에서보기

+1

몇 가지 명확한 설명이 필요합니다. 제목은 2 단계 목록보기를 의미합니다. 필요한 경우 http://developer.android.com/reference/android/widget/ExpandableListView.html을 참조하십시오. 그렇지 않으면 항목 클릭시 다른 활동을 열어야하는 경우 Intent 및 context.startActivity()를 사용하면됩니다. –

+0

2 List Fragments를 사용하고 동일한 활동에서 이들을 전환하십시오. –

답변

0

하나 개의 솔루션이 될 것이다 그것은 아주 가까이 보인다 :

두 번째의 ListView 활동을 작성하고 정기적 인 텐트를 사용하여 두 번째 ListViewActivity을 여는 OnItemClickListener 가진 첫번째 ListActivity를 구현합니다.

listView = (ListView) findViewById(R.id.mylistview); 
     listView.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View v, int position, 
        long arg3) { 

       Intent intent = new Intent(FirstListActivity.this, SecondListActivity.class); 
       Bundle bundle = new Bundle(); 
       bundle.putString("pos", position); 
       intent.putExtras(bundle); 
       startActivity(intent); 
      } 
     }); 

업데이트 :이 간단한 예제 목록 응용 프로그램을 작성했다

. 당신은 곤경에 그것을 사용할 수 있습니다. 두 번째 목록 활동을 열 수있는 코드가 포함되어 있지만 주석 처리되었습니다. 이 예제를 실행하면 더 가까워지고 있습니다. 그런 다음 의도 코드를 주석으로 처리 할 수 ​​있습니다.

package com.adpog.listviewexample; 

import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.BaseAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 
import android.app.Activity; 

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Find the ListView resource. 
     ListView mainListView = (ListView) findViewById(R.id.my_list); 

     // Set the Adapter as the ListView's adapter. 
     mainListView.setAdapter(new BaseAdapter(){ 

      // Create and populate a List of planet names. 
      String[] planets = new String[] {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune" };  

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

      @Override 
      public Object getItem(int pos) { 
       return planets[pos-1]; 
      } 

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

      @Override 
      public View getView(int pos, View view, ViewGroup viewgroup) { 
       if(view == null){ 
        /** 
        <?xml version="1.0" encoding="utf-8"?> 
         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
          android:orientation="horizontal" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent"> 
          <ImageView 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:src="@drawable/ic_launcher" 
          /> 
          <TextView 
           android:id="@+id/item_text" 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:text="Text not set" /> 
         </LinearLayout> 
        */ 
        view = View.inflate(getApplicationContext(), R.layout.row, null); 
       } 
       return view; 
      } 
     });   

     mainListView.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
       Log.d("ListView", "Pos: " + arg2 + ", long : "+arg3); 
       Toast.makeText(getApplicationContext(), "Test " + arg2, Toast.LENGTH_SHORT).show(); 
       /* Alternative way; opens a new Activity 
       Intent intent = new Intent(this, SecondListViewActivity.class); 
       intent.putExtra("position", pos); 
       startActivity(intent); 
       */ 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
      } 
     }); 

     /** 
     * Implement an action for each item click. 
     */ 
     mainListView.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
       Log.d("ListView", "OnClickPos: " + arg2 + ", long : "+arg3); 
       Toast.makeText(getApplicationContext(), "Test " + arg2, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
} 
+0

4 가지 옵션이있는 목록과 같은 옵션이 있고 각 옵션에는 내부에 다른 3 가지 옵션이 있으며 3 가지 옵션 각각에 그림과 설명이 들어있을 것입니다. 처리가 가능할까요? – AYS

+0

가능합니다. 각 목록 항목에 대한 아이콘과 텍스트를 표시 할 수있는 어댑터를 사용하여 두 번째 ListView 활동을 구현하십시오. 인 텐트 추가를 통해 식별 된 데이터 배열을 사용하여 listview를 초기화하십시오. –

+0

나는 여러 번 시도했지만 구현 방법을 잘 모르겠다. 확실히 이해가 안되기 때문에 잘 모르겠다. 저를 올바른 길로 인도하기위한 모범을 보이시겠습니까? 많은 감사합니다 !! – AYS

관련 문제