문제

앱 IM 개발에서 Titel Datum 등이있는 메시지 목록을 얻었습니다. Messagetitel을 클릭 할 때이 항목을 확장하고 세부 사항을 표시하고 "Reply", "Delete"및 "Forward"와 같은 새로운 버튼을 표시합니다. .

처럼:
- 메시지
- 메시지 (클릭 메시지)
세부 사항 버튼 삭제, 앞으로, 답장
텍스트
- 메시지
- 메시지

내가 지금까지 한 일은 다음과 같습니다.

먼저 메시지의 모델 클래스 :

public class MyMessage {

private String from;
private String subject;
private String date;
private String message;

public MyMessage(String f, String s, String d, String m){
    from= f;
    subject= s;
    date = d;
    message= m;
}

public String getFrom() {
    return from;
}

public String getSubject() {
    return subject;
}

public String getDate() {
    return date;
}

public String getMessage() {
    return message;
}

}

내 사용자 지정 어댑터 :

public class NewAdapter extends BaseExpandableListAdapter {

public ArrayList<MyMessage> mMessage;
public LayoutInflater minflater;
 public Activity activity;

public NewAdapter(ArrayList<MyMessage> message){
    mMessage = message;
}

 public void setInflater(LayoutInflater mInflater, Activity act) {
      this.minflater = mInflater;
      activity = act;
     }

@Override
public Object getChild(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

    TextView text = null;
    // TODO Auto-generated method stub
    if (convertView == null) {
           convertView = minflater.inflate(R.layout.message_details, null);
          }
    text = (TextView) convertView.findViewById(R.id.tv_message_text);
    text.setText(mMessage.get(childPosition).getMessage());
    return convertView;
}

@Override
public int getChildrenCount(int groupPosition) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public Object getGroup(int groupPosition) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public int getGroupCount() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public long getGroupId(int groupPosition) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
    TextView from= null;
    TextView date = null;
    TextView subject= null;
    // TODO Auto-generated method stub

    if(convertView == null){
        convertView = minflater.inflate(R.layout.message_head, null);
    }
    from= (TextView) convertView.findViewById(R.id.tv_from);
    date = (TextView) convertView.findViewById(R.id.tv_date);
    subject= (TextView) convertView.findViewById(R.id.tv_subject);

    from.setText(mMessage.get(groupPosition).getfrom());
    date.setText(mMessage.get(groupPosition).getDate());
    subject.setText(mMessage.get(groupPosition).getSubject());


    return convertView;
}

@Override
public boolean hasStableIds() {
    // TODO Auto-generated method stub
    return false;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return false;
}

}

내 메인 클래스 :

public class Test extends ExpandableListActivity{

public ArrayList<MyMessage> message;
public ExpandableListView eListView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    eListView = getExpandableListView();

    message = createMessages();
    NewAdapter nAdapter = new NewAdapter(message);
    nAdapter
    .setInflater(
      (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE),
      this);
    getExpandableListView().setAdapter(nAdapter);

}

private ArrayList<MyMessage> createMessages() {

    ArrayList<MyMessage> m = new ArrayList<MyMessage>();
    MyMessage test1 = new MyMessage("test1", "testbetreff", "08.11.2013 / 09:44", "gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so");
    MyMessage test2 = new MyMessage("test2", "testbetreff", "08.11.2013 / 09:45", "gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so");
    MyMessage test3 = new MyMessage("test3", "testbetreff", "08.11.2013 / 09:46", "gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so");
    MyMessage test4 = new MyMessage("test4", "testbetreff", "08.11.2013 / 09:47", "gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so");

    m.add(test1);
    m.add(test2);
    m.add(test3);
    m.add(test4);

    return m;

}

}

나는 오류가 없지만 내 활동은 비어 있습니다. 나는 이것을 디버깅하려고했지만 getchildview () 또는 getGroupView ()를 호출하지 않으며 그 이유를 모르겠습니다.

의상 어댑터로 큰 실수를하고 있습니까? 미리 감사드립니다

도움이 되었습니까?

해결책

 @Override
    public int getChildrenCount(int groupPosition) {
        return 1; //just one children?
    }

    @Override
    public Object getGroup(int groupPosition) {
        return mMessage.get(groupPosition);
    }

    @Override
    public int getGroupCount() {
       return mMessage.size();
    }

    @Override
     public long getGroupId(int groupPosition) {
        return groupPosition;
     }

이걸 시도해보십시오 ... 어댑터에 전혀 항목이 없다고 말했기 때문에 호출되지 않을 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top