2012-11-08 5 views
8

목록보기의 모든 목록 항목을 새 페이지로 열어서 각 목록보기 항목을 내가 사용할 수있는 새 검은 색 페이지로 열려고합니다. 나는 이것을 어떻게 구현할 지 모른다. 나는 몇 시간 동안 검색을했고 내 해결책에 대한 답을 찾을 수 없습니다. 누군가가 링크를 제공하는 대신 이것을하는 방법을 설명하거나 설명 할 수 있다면 많은 도움이 될 것입니다.Android - 클릭 가능한 목록보기를 만드는 방법?

<string-array name="sections"> 
    <item >Pro Constructive</item> 
    <item >Con Constructive</item> 
    <item >1st Speaker Cross</item> 
    <item >Pro Rebbutal</item> 
    <item >Con Rebuttal</item> 
    <item >2nd Speaker Cross</item> 
    <item >Pro Summary</item> 
    <item >Con Summary</item> 
    <item >Grand Cross</item> 
    <item >Pro Final Focus</item> 
    <item >Con Final Focus</item> 
</string-array> 

이 내 string.xml

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:entries="@array/sections" > 
</ListView> 

이 내 activity_main.xml에에 있습니다

여기에 지금까지 내 코드입니다.

여기를 클릭하면 내 목록의 각 항목을 클릭 할 수 있고 새 페이지로 열 수 있습니까?

미리 감사드립니다.

편집 :

로그 캣은 더 이상 적합하지 않습니다.

답변

29

이 상당히 간단하다

이리스트 뷰와 활동이다, 그것은 OnItemClickListener 구현 :

public class MainActivity extends Activity implements OnItemClickListener { 

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

     //* *EDIT* * 
     ListView listview = (ListView) findViewById(R.id.listView1); 
     listview.setOnItemClickListener(this); 
    } 

    public void onItemClick(AdapterView<?> l, View v, int position, long id) { 
     Log.i("HelloListView", "You clicked Item: " + id + " at position:" + position); 
      // Then you start a new Activity via Intent 
      Intent intent = new Intent(); 
      intent.setClass(this, ListItemDetail.class); 
      intent.putExtra("position", position); 
      // Or/And 
      intent.putExtra("id", id); 
      startActivity(intent); 
    } 

편집

을 위의 코드는 것 MainActivity.java에 저장됩니다. 나는 클래스의 이름을 MainActivity으로 변경했으며 contentView는 setContentView(R.layout.activity_main)으로 바꿨다. 이클립스에서 새로 만든 Android 프로젝트의 이름이다.
// * 아래에있는 두 개의 새 줄을 참조하십시오 - 목록의 항목 클릭에 대해 Listener를 설정합니다.

귀하의 activity_main.xml은 다음과 같아야합니다

당신`의 array.xml이 (string.xml되지 않음) 고해상도/값/'폴더이

<resources> 
    <string-array name="sections"> 
     <item >Pro Constructive</item> 
     <item >Con Constructive</item> 
     <item >1st Speaker Cross</item> 
     <item >Pro Rebbutal</item> 
     <item >Con Rebuttal</item> 
     <item >2nd Speaker Cross</item> 
     <item >Pro Summary</item> 
     <item >Con Summary</item> 
     <item >Grand Cross</item> 
     <item >Pro Final Focus</item> 
     <item >Con Final Focus</item> 
    </string-array> 
</resources> 
과 같은
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:entries="@array/sections" > 
    </ListView> 
</RelativeLayout> 

주의 : &을 복사하면이 코드가 붙여 넣기해야합니다. 그러나 ListItemDetail.class을 아직 만들지 않았기 때문에 항목을 클릭하면 오류가 발생합니다.

귀하의 ListItemDetail.java :

public class ListItemDetail extends Activity { 

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

    Intent intent = getIntent(); 
    int position = intent.getIntExtra("position", 0); 

    // Here we turn your string.xml in an array 
    String[] myKeys = getResources().getStringArray(R.array.sections); 

    TextView myTextView = (TextView) findViewById(R.id.my_textview); 
    myTextView.setText(myKeys[position]); 


    } 

} 

그리고 그 activity_listitem.xml 당신이 작동이 코드 과거 복사 할 경우

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/my_textview"/> 

</LinearLayout> 

다음은이 볼 수있는 방법의 예입니다.

+0

, 나는이 새로운 해요. 이것을 string.xml 또는 activity_main.xml에 넣을 수 있습니까?이 정보를 내 정보로 바꿀 수 있습니까? –

+0

나는 내 대답을 편집했다. 희망이 올바른 경로에 당신을 가져옵니다 :) – Delpes

+0

그래, 당신이 말한 것처럼, 그것은 나에게 오류를 제공하지만, 나는 activity_listitem.xml과 ListItemDetail.java를 추가했는데, 나는 왜 애플 리케이션 FC가 있는지 모르겠다. 오류 없음. –

0

onListItemClick 함수를 사용하여 다음 활동을로드하고 데이터를 전달하는 인 텐트를 설정합니다. 사실

public void onListItemClick(ListView parent, View view, int position, long id) 
{ 
    Intent intent = new Intent(this, AnotherActivity.class); 
    intent.putExtra("position", position); 
    startActivity(intent); 
} 
0

String[] myKeys = getResources().getStringArray(R.array.sections); 
ListView mListView = (ListView)findViewById(R.id.listView1); 
mListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myKeys)); 

추천하고 목록보기 항목을 클릭으로 string.xml에 배열에서 목록보기를 채울 수는 setOnItemClickListener

mListView.setOnItemClickListener(new OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> arg0,View arg1, int position, long arg3) 
    { 

     Intent n = new Intent(getApplicationContext(), yourclass.class); 
     n.putExtra("position", position); 
     startActivity(n); 
    } 
}); 
0

목록보기에 매우 간단하고 쉬운 method.just의 사용이다 = (ListView) findViewById (R.id.listview);

  • 목록 항목 미안 해요

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    
         if(position==0){ 
          Intent i=new Intent(MainActivity.this,Main3Activity.class); 
          startActivity(i); 
         } 
        } 
    }); 
    
관련 문제