मैं एंड्रॉइड प्रोग्रामिंग के लिए काफी नया हूं और पाठ्यक्रमों की एक सूची दिखाते हुए एक बुनियादी विस्तार योग्य सूचीदृश्य को लागू करने की कोशिश की, जिसे क्लिक करते समय कुछ अतिरिक्त विवरण दिखाना चाहिए। मुझे लगता है कि समस्या बहुत बुनियादी है क्योंकि मुझे किसी भी विचार में कुछ भी पसंद नहीं है, लेकिन मुझे अभी भी कोई समाधान नहीं मिला है, अन्य अधिकांश प्रश्न बहुत अधिक विशिष्ट हैं।एंड्रॉइड एक्सपेंडेबल लिस्ट व्यू विस्तृत नहीं है/क्लिक करने योग्य नहीं है
पहला भाग ठीक काम करता है (पाठ्यक्रमों की सूची प्रदर्शित करता है), समस्या यह है कि सूची क्लिक करने योग्य नहीं है, जिसका अर्थ है कि यह विस्तार नहीं होता है।
क्या अभी मैं निर्धारित किया है निम्नलिखित है:
1. getChildView कभी नहीं कहा जाता है (डिबगर ब्रेकप्वाइंट पर कभी नहीं बंद हो जाता है)
2. वहाँ बच्चों के लिए डेटा है यह एक ही डेटा है कि groupheading के लिए प्रयोग किया जाता है के रूप में जो ठीक काम करता है।
मैंने एक ग्रुपक्लिक लिस्टनर सेट करने का भी प्रयास किया है जिसे कभी नहीं कहा गया था, इसलिए मैंने इसे फिर से हटा दिया।
मेरी कोड:
समूह शीर्षक लेआउट:
<TextView
android:id="@+id/CourseName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="bottom"
android:text="CourseName"
android:layout_weight="7"
android:layout_marginRight="25dp"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/CourseDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="bottom"
android:layout_weight="3"
android:text="CourseDate" />
<CheckBox
android:id="@+id/checkBox"
style="?android:attr/starStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
child_row लेआउट:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/button1"
android:text="Button" />
<TextView
android:id="@+id/phases"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:gravity="center"
android:layout_below="@+id/button1"
android:text="phases:" />
<TextView
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/phases"
android:gravity="center"
android:text="information:" />
</RelativeLayout>
गतिविधि लेआउट:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/sportName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:gravity="center"
android:text="Sport Name"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/profile_title" />
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:numStars="5"
android:stepSize="1"
android:layout_centerInParent="true" />
<ExpandableListView
android:id="@+id/expandableListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/sportName" >
</ExpandableListView>
</RelativeLayout>
एडाप्टर जावा:
package ch.unibe.unisportbern.views.details;
import java.util.ArrayList;
import com.example.unisportbern.R;
import ch.unibe.unisportbern.support.Course;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class SportsAdapter extends BaseExpandableListAdapter {
private Context context;
private ArrayList<Course> courseList;
public SportsAdapter(Context context, ArrayList<Course> courseList) {
this.context = context;
this.courseList = courseList;
}
@Override
public Object getChild(int index, int stub) {
return courseList.get(index);
}
@Override
public long getChildId(int index, int stub) {
return stub;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null){
LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.child_row, null);
}
TextView phases = (TextView) convertView.findViewById(R.id.phases);
TextView info = (TextView) convertView.findViewById(R.id.info);
phases.setText("phases:\n" + courseList.get(groupPosition).getPhases());
info.setText(courseList.get(groupPosition).getInformation());
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
@Override
public Object getGroup(int groupPosition) {
return courseList.get(groupPosition);
}
@Override
public int getGroupCount() {
return courseList.size();
}
@Override
public long getGroupId(int groupPosition) {
return courseList.get(groupPosition).getId();
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inf.inflate(R.layout.group_heading, null);
}
TextView courseName = (TextView) convertView.findViewById(R.id.CourseName);
TextView courseDate = (TextView) convertView.findViewById(R.id.CourseDate);
courseName.setText(courseList.get(groupPosition).getName());
courseDate.setText(courseList.get(groupPosition).getDay() + courseList.get(groupPosition).getTime());
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
गतिविधि जावा:
package ch.unibe.unisportbern.views.details;
import java.util.ArrayList;
import com.example.unisportbern.R;
import ch.unibe.unisportbern.support.Course;
import ch.unibe.unisportbern.support.DBMethodes;
import ch.unibe.unisportbern.support.Sport;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ExpandableListView;
public class DActivity extends Activity{
public final static String NAME = "SportName";
public final static String ID = "SportID";
private Sport sport;
private ArrayList<Course> courses;
private SportsAdapter sportsadapter;
private ExpandableListView myList;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getSport();
getCourses();
setContentView(R.layout.details_layout);
myList = (ExpandableListView) findViewById(R.id.expandableListView);
sportsadapter = new SportsAdapter(this, courses);
myList.setAdapter(sportsadapter);
}
private void getCourses() {
DBMethodes dbMethodes = new DBMethodes(this);
try {
courses = dbMethodes.getAllCourses(sport);
} catch (Exception e) {
}
}
private void getSport() {
Intent intent = this.getIntent();
int id = intent.getIntExtra(ID, 0);
String name = intent.getStringExtra(NAME);
this.sport = new Sport(id, name);
}
}
धन्यवाद अग्रिम में एक बहुत!
संपादित करें: मुझे इसे मौका मिला। ग्रुपहेडर के अंदर चेकबॉक्स फोकस करने योग्य था, सूची से दूर सभी क्लिक चुरा रहा था। इस समस्या को हल करने के लिए बस फोकस करने योग्य आपकी सूची में चेकबॉक्स/बटन की विशेषता को गलत पर सेट करें।
शानदार !!!, आपने मेरा समय बचाया। –
आपको धन्यवाद +1 :) – semih
आपने अपना समय बचाया। धन्यवाद –