ListView 내부의 ListView 및 버튼
Button
내부 를 표시하고 싶습니다 ListView
. 목표는 ListView
선이나 버튼을 클릭하는 것입니다.
선을 클릭하면 자세한 정보가 표시됩니다. 하단에 더 많은 버튼이 표시되는 버튼을 클릭하십시오.
GMAIL 앱과 동일합니다.
오른쪽에 체크 박스가 있고 하단 체크 박스를 클릭하면 버튼 바가 나타납니다.
내 문제는 버튼을에 삽입 한 후 버튼을 ListView
클릭 할 수 없다는 것입니다. LinearLayout
버튼에서에 추가하면 llButton.setClickable()
작동합니다. 하지만 버튼 만. ListView
자체는 더 이상 클릭에 반응하지 않습니다!
나는 이 예를 시도했다 .
위와 같은 문제 ...
사용자 지정 어댑터를 사용하는 경우 ListView 내부에서 Button 클릭이 작동하지 않으므로 다음 코드를 사용하여 OnItemClickListener
.
listId.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> list, View v, int pos, long id) {
// Your code for item clicks
}
});
이것을 명확히하기 위해 – 그리고 아무도 이렇게 간단한 것을 말하지 않은 것 같습니다 –리스트 뷰와 함께 초점을 맞출 수있는 버튼이 작동하는 것은 허용되지 않지만, 이것에 대한 훨씬 더 간단한 해결책이 있습니다.
허용되는 대답은 주어진 것입니다. 목록 항목에 대한 클릭 리스너를 설정할 때 항상 그렇게해야합니다. 그래서 OP가 그것을 몰랐다는 것은 어리석은 일입니다.
XML 레이아웃을 목록 항목으로 사용하는 경우 다음 속성을 갖도록 버튼을 설정하면 목록 항목도 클릭 할 수 있습니다.
android:focusable="false"
목록 항목 XML에 아래 행을 추가하십시오.
android:descendantFocusability="blocksDescendants"
그러면 목록 항목은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:descendantFocusability="blocksDescendants"
android:layout_height="wrap_content" >
// Your layout objects here
</RelativeLayout>
버튼 또는 목록 항목을 클릭 할 때 이벤트가 트리거되도록하려면 다음을 수행 할 수 있습니다.
onItemClick 만 처리합니다.
mListView.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int i, long l) {
// handle click here
}
);
어댑터에서 버튼을 클릭하거나 초점을 맞출 수 없도록 수정합니다 (또는 대신 xml 파일에서 수행).
public class MyAdapter extends BaseAdapter {
...
public View getView(int position, View convertView, ViewGroup parent) {
.....
Button btn = view.findViewById(R.id.button);
btn.setFocusable(false);
btn.setClickable(false);
}
}
제 경우에는이 속성을 listView에 추가해야했습니다.
<ListView
...
android:clickable="true"
...
</ListView>
그리고 어댑터에서 버튼보기에 클릭 리스너를 추가하십시오.
wrapper.getButtonHi().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
DebugUtils.logDebug("Clickeado :: "+ mContact.getUserId());
}
});
최종 변수를 설정하는 것이 중요합니다.
public View getRowView(final int position, View convertView, ViewGroup parent) {
final BrowseContactItemWrapper wrapper;
final UserModel mContact = lstContact.get(position);
.....
}
참고 URL : https://stackoverflow.com/questions/3045872/listview-and-buttons-inside-listview
'programing' 카테고리의 다른 글
Selenium 웹 드라이버 및 Java. (0) | 2020.12.14 |
---|---|
jQuery 웹 페이지 높이 (0) | 2020.12.14 |
"&"문자는 web.config에 저장된 암호를 구분합니다. (0) | 2020.12.14 |
ICE 후보자는 무엇이며 피어 연결은 어떻게 선택합니까? (0) | 2020.12.14 |
MVC의 현재 컨텍스트에 '스크립트'라는 이름이 없습니다. (0) | 2020.12.14 |