2014-09-08 3 views
0

두 개의 개별 텍스트보기로 사용자 정의 확장 가능한 목록보기를 만들려고합니다. 하나의 텍스트 뷰는 왼쪽으로 정렬되고 다른 하나는 오른쪽으로 정렬되어야합니다. 누구든지 나를 도와 줄 수 있어요.두 개의 텍스트보기가있는 Android 확장 가능 목록보기

이것은 내 레이아웃 파일입니다.

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

    <TextView 
     android:id="@+id/lblListItem" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="17sp" 
     android:paddingTop="5dp" 
     android:paddingBottom="5dp" 
     android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" /> 

    <TextView 
     android:id="@+id/date" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" 
     android:text="@string/click" 
     android:textColor="@color/Red" /> 

</LinearLayout> 

이 내 어댑터 클래스입니다

public class ExpandableListAdapter extends BaseExpandableListAdapter { 

    private Context _context; 
    private List<String> _listDataHeader; // header titles 
    // child data in format of header title, child title 
    private HashMap<String, List<String>> _listDataChild; 

    public ExpandableListAdapter(Context context, List<String> listDataHeader, 
      HashMap<String, List<String>> listChildData) { 
     this._context = context; 
     this._listDataHeader = listDataHeader; 
     this._listDataChild = listChildData; 
    } 

    @Override 
    public Object getChild(int groupPosition, int childPosititon) { 
     return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
       .get(childPosititon); 
    } 

    @Override 
    public long getChildId(int groupPosition, int childPosition) { 
     return childPosition; 
    } 

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

     final String childText = (String) getChild(groupPosition, childPosition); 

     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_item, null); 
     } 

     TextView txtListChild = (TextView) convertView 
       .findViewById(R.id.lblListItem); 

     txtListChild.setText(childText); 
     return convertView; 
    } 

    @Override 
    public int getChildrenCount(int groupPosition) { 
     return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
       .size(); 
    } 

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

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

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

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, 
      View convertView, ViewGroup parent) { 
     String headerTitle = (String) getGroup(groupPosition); 
     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_group, null); 
     } 

     TextView lblListHeader = (TextView) convertView 
       .findViewById(R.id.lblListHeader); 
     lblListHeader.setTypeface(null, Typeface.BOLD); 
     lblListHeader.setText(headerTitle); 

     return convertView; 
    } 

    @Override 
    public boolean hasStableIds() { 
     return false; 
    } 

    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 
     return true; 
    } 
} 

이 내가 출력 레이아웃 각 줄에 다음과 같이 할 내 주요 활동

public class HomeFragment extends Fragment { 

    public HomeFragment(){} 
    TextView Username; 
    TextView Acct, Paid, Email; 
    ExpandableListAdapter listAdapter; 
    ExpandableListView expListView; 
    List<String> listDataHeader; 
    HashMap<String, List<String>> listDataChild; 
    List<String> horse; 
    List<String> owner ; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
     expListView = (ExpandableListView) rootView.findViewById(R.id.list); 

     // preparing list data 
     listDataHeader = new ArrayList<String>(); 
     listDataChild = new HashMap<String, List<String>>(); 

     // Adding child data 
     listDataHeader.add("Rider and Trainer Info"); 
     listDataHeader.add("Horse and Owner Info"); 

     // Adding child data 
     horse = new ArrayList<String>(); 
     horse.add("horse"); 

     owner = new ArrayList<String>(); 




     listDataChild.put(listDataHeader.get(0), horse); // Header, Child data 
     listDataChild.put(listDataHeader.get(1), owner); 

     Context context = getActivity().getApplicationContext(); 
     listAdapter = new ExpandableListAdapter(context, listDataHeader, listDataChild); 

     // setting list adapter 
     expListView.setAdapter(listAdapter); 
     final GlobalClass globalVariable = (GlobalClass) getActivity().getApplicationContext(); 
     String Name = globalVariable.getName(); 
     String acct = globalVariable.getUsersid(); 
     String paid = globalVariable.getPaid(); 
     String email = globalVariable.getEmail(); 

     Username = (TextView)rootView.findViewById(R.id.textView2); 
     Acct = (TextView)rootView.findViewById(R.id.textView4); 
     Paid = (TextView)rootView.findViewById(R.id.textView3); 
     Email = (TextView)rootView.findViewById(R.id.textView5); 
     Username.setText("Username: "+ Name); 
     Acct.setText("Acct # "+ acct); 
     Paid.setText("Expired On: "+ paid); 
     Email.setText("Email: " + email); 
     return rootView; 
    } 
} 

입니다.

샘플 텍스트 날짜

+0

내가 텍스트보기를 정렬하는 방법을 알고 레이아웃에서 다른보기를 찾을 수 있습니다. 하지만 어떻게 프로그래밍 할 수 있습니다. 두 텍스트 뷰를 모두 업데이트하는 배열로 목록 뷰를로드하십시오. – user3267471

+0

죄송합니다, 나는 당신을 이해하지 못한다고 생각합니다. 사실, 나는 그 질문을 이해할 것이라고 생각하지 않는다. 코드를 보면 이미 하나의 TextView를 업데이트하고 있습니다. 다른 방법으로 업데이트하지 않는 이유는 무엇입니까? TextView 날짜 = (TextView) convertView .findViewById (날짜); date.setText (childText); –

+0

안녕하세요. 도움을 주셔서 감사합니다. 그 코드 줄을 추가했습니다. 하지만 그것은 하나의 줄 바꿈 코드 이상을 추가해야한다는 것을 확실히 알지 못합니다. 하지만 다른 코드를 추가하는 것이 좋습니다. – user3267471

답변

0

이 시도 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="55dip" 
    android:padding="10dp" 
    android:orientation="horizontal" 
    android:weightSum="2"> 

    <TextView 
     android:id="@+id/lblListItem" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="lblListItem" 
     android:textSize="17sp" /> 

    <TextView 
     android:id="@+id/date" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="Test" 
     android:textSize="17sp" /> 

</LinearLayout> 
+0

텍스트보기를 정렬하는 방법을 알고 있습니다. 하지만 어떻게 프로그래밍 할 수 있습니다. 두 텍스트 뷰를 모두 업데이트하는 배열로 목록 뷰를로드하십시오. – user3267471

+0

지금은 단 하나의 텍스트 뷰만 업데이트 할 수 있습니다. – user3267471

0

을 당신이 대신 RelativeLayout의를 사용하는 경우. layout_align (왼쪽/오른쪽) xml 속성을 사용하여 TextViews를 왼쪽/오른쪽으로 정렬 할 수 있습니다. 이

android:layout_alignRight = "true" 
+0

텍스트 뷰 정렬 방법을 알고 있습니다. 하지만 어떻게 프로그래밍 할 수 있습니다. 두 텍스트 뷰를 모두 업데이트하는 배열로 목록 뷰를로드하십시오. – user3267471

1

처럼

그냥

@Override 
    public View getGroupView(int groupPosition, boolean isExpanded, 
      View convertView, ViewGroup parent) { 
     String headerTitle = (String) getGroup(groupPosition); 
     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_group, null); 
     } 

     TextView lblListHeader = (TextView) convertView 
       .findViewById(R.id.lblListHeader); 
     lblListHeader.setTypeface(null, Typeface.BOLD); 
     lblListHeader.setText(headerTitle); 

     TextView lblListDate = (TextView) convertView 
       .findViewById(R.id.lblListDate); 
     lblListHeader.setTypeface(null, Typeface.BOLD); 
     lblListHeader.setText(date); 

     return convertView; 
    } 
관련 문제