2012-03-07 28 views
6

Tôi đã cố gắng tìm kiếm giải pháp, nhưng với rất ít thành công. Tôi phải hiển thị một cửa sổ bật lên bật lên chứa danh sách các mục. Tôi có thể hiển thị cửa sổ nhưng onitemclicklistener không được gọi khi nhấp vào một mục trong chế độ xem danh sách . Bất kỳ trợ giúp nào về vấn đề này sẽ được đánh giá cao.Cách đặt mục có thể nhấp trong chế độ xem danh sách?

Cảm ơn

Edit1:

public class PopUpWindowActivity extends Activity { 

    /** Called when the activity is first created. */ 
    String[] countries = new String[] { 
     "India", "USA", "Canada" 
    }; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     LinearLayout ll = new LinearLayout(this); 
     ListView lv = new ListView(this); 
     lv.setAdapter(new ArrayAdapter <String> (this, android.R.layout.simple_list_item_1, countries)); 
     lv.setOnItemClickListener(new OnItemClickListener() { 

       public void onItemClick(AdapterView <? > arg0, View arg1, int arg2, 
        long arg3) { 
        Log.v("clicked", (String)((TextView) arg1).getText()); 
       } 

      }); 
     ll.addView(lv); 
     setContentView(ll); 
    } 
} 

Trong đoạn mã trên, tôi đã cố gắng để tạo ra một bố cục bên trong mà tôi thêm một cái nhìn danh sách. Điều này làm cho chế độ xem danh sách không còn có thể nhấp nữa. Tôi phải làm điều này bởi vì, tôi đang cố gắng để thực hiện một cửa sổ bật lên bên trong mà nên có nhiều mục cùng với một danh sách xem.

+1

đặt mặc định ListView code.By của bạn là nhấp được. –

Trả lời

-1

Sửa trả lời

Áp dụng mẫu này hãy này làm việc cho bạn Tôi đã thử mã này

//ListviewActivity.java

package com.anl.lk; 

public class ListviewActivity extends ListActivity { 

    static final String[] COUNTRIES = new String[] { 

     "Afghanistan", "Albania", "Algeria", "American Samoa", 
      "Andorra", "Angola", "Anguilla", "Antarctica", 
      "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", 
      "Australia", "Austria", "Azerbaijan", "Bahrain", 
      "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", 
      "Benin", "Bermuda", "Bhutan", "Bolivia", 
      "Bosnia and Herzegovina", "Botswana", "Bouvet Island", 
      "Brazil", "British Indian Ocean Territory" 
    }; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setListAdapter(new ArrayAdapter <String> (this, 
       android.R.layout.simple_list_item_1, COUNTRIES)); 
     getListView().setTextFilterEnabled(true); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     super.onListItemClick(l, v, position, id); 

     new AlertDialog.Builder(this) 
      .setTitle("Hello") 
      .setMessage("from " + getListView().getItemAtPosition(position)) 
      .setPositiveButton("OK", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) {} 
      }) 
      .show(); 

     Toast.makeText(ListviewActivity.this, 
      "ListView: " + l.toString() + "\n" + 
      "View: " + v.toString() + "\n" + 
      "position: " + String.valueOf(position) + "\n" + 
      "id: " + String.valueOf(id), 
      Toast.LENGTH_LONG).show(); 
    } 

} 

// FirstPage

package com.anl.lk; 

public class FirstPage extends Activity { 

    @override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button b = (Button) findViewById(R.id.button1); 
     b.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Intent sam = new Intent(FirstPage.this, ListviewActivity.class); 
        startActivity(sam); 

       } 
      }); 
    } 
} 

// Tệp kê khai

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.anl.lk" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="8" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:label="@string/app_name" 
     android:name=".FirstPage" > 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".ListviewActivity" android:theme="@android:style/Theme.Dialog"></activity> 
</application> 

Hãy sử dụng mã này nó có giải pháp của bạn

+0

i có nghĩa là để hiển thị Một cửa sổ bật lên cho một Hoạt động, chúng ta nên sử dụng android: theme = "@ android: style/Theme.Dialog" trong tệp kê khai cho Hoạt động tương ứng để nó sẽ tải Mọi hoạt động có nghĩa là thậm chí listview trên cửa sổ bật lên đó – Ramz

+0

OnListItemClick sẽ có sẵn để ghi đè lên chỉ khi chúng tôi mở rộng lớp listactivity. Nhưng tôi muốn hiển thị danh sách bên trong cửa sổ bật lên. – user1253887

+0

xin vui lòng sử dụng Mã này Cập nhật và thử nghiệm (Mã số làm việc) – Ramz

10

là danh sách và các mặt hàng trong danh sách thiết lập để nhấp được? Hoặc là lập trình ...

ListView myList = (ListView) findViewById(R.id.list_view_id); 
myList.setClickable(true); 

Hoặc trong XML ...

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:clickable="true"> 
    ... 
    </ListView> 

Tôi giả sử bạn đã làm điều đó, nhưng đôi khi chúng ta bỏ lỡ ngay cả những :) rõ ràng

EDIT:

Từ Android Tutorial đây là cách đặt một onItemClickListener theo chương trình.

ListView lv = getListView(); 
lv.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     // When clicked perform some action... 
    } 
}); 

EDIT 2:

Đây là XML của tôi

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ListView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/list" /> 

</LinearLayout> 

Và đây là mã của tôi

public class HelloAndroidActivity extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String[] countries = getResources().getStringArray(R.array.countries_array); 

     ListView lv = (ListView) findViewById(R.id.list); 
     lv.setAdapter(new ArrayAdapter <String> (this, R.layout.list_item, countries)); 
     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       public void onItemClick(AdapterView <? > arg0, View view, int position, long id) { 
        // When clicked, show a toast with the TextView text 
        Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
         Toast.LENGTH_SHORT).show(); 

       } 

      }); 
    } 
} 
+0

Các mục trong danh sách là các chuỗi, có thể đặt các mục đó có thể nhấp được không. Tôi xin lỗi nếu thiếu bất cứ điều gì ở đây. Tôi là người mới bắt đầu trong android – user1253887

+0

Bạn không cần phải ... Đây là [Hướng dẫn dành cho Android] (http://developer.android.com/resources/tutorials/views/hello-listview.html) nếu bạn có thiên đường ' t thấy nó. Bạn có thể sử dụng setOnItemClickListener để có được hành vi mà bạn muốn, tôi tin. –

+0

Bạn là chính xác, nhưng điều này hoạt động khi màn hình chỉ chứa listview. Thử tạo linearlayout và thêm listview vào layout tuyến tính này. Sau đó onitem click listener wont work – user1253887

0

Insert khách sạn này chống lại bất kỳ mục listview

android:onClick="buttonClicked" 

sau đó trong bạn mã

public void buttonClicked(View view) 
{ 
    //Do what you want to do.. 
} 
2
ListView myList; 
myList = (ListView)findViewById(list_vew_id_in_xml) 
myList.setOnItemClickListener(new OnItemClickListener() 
{ 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     { 
     //Toast.makeText(BritishCouncilActivity.this, "" + position, 2).show(); 
     } 
}); 
Các vấn đề liên quan