获取自定义适配器android的textview

时间:2015-09-14 20:01:28

标签: java android android-listview android-custom-view

我有一个自定义视图适配器,带有四个按钮和一个填充ListView的标题。

当用户单击其中一个按钮时,我想检索与该特定适配器关联的标题。 到目前为止,我已经尝试检索父级并获取textView,但这不会返回正确的标题。 那么......我如何获得附加到具有用户点击按钮的适配器的特定标题?

我很乐意澄清您是否需要更多信息。

这是适配器的布局。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">


<TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/fragment_student_home_classTitle_textView"
        android:paddingTop="20dp"
    android:layout_toLeftOf="@+id/linearLayout"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="right"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:id="@+id/linearLayout">

    <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="match_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:id="@+id/fragment_student_home_grades"
                android:background="#ffff130c" />

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/fragment_student_home_grades_imageButton"
                android:src="@drawable/ic_grades_512"
                android:background="#00000000" />
        </LinearLayout>

    <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="match_parent">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:id="@+id/fragment_student_home_notification_textEdit"
                android:background="#ffff130c" />

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/fragment_student_home_notification_imageButton"
                android:src="@drawable/ic_bell_512"
                android:background="#00000000" />
        </LinearLayout>

    <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="match_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:id="@+id/fragment_student_home_homework"
                android:background="#ffff130c" />

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/fragment_student_home_homework_imageButton"
                android:src="@drawable/ic_foundation_book_bookmark_simple_black_512x512"
                android:contentDescription="@string/homework_notification_icon"
                android:background="#00000000" />
        </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:weightSum="1">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:id="@+id/fragment_student_home_attendance"
            android:background="#ffff130c" />

        <ImageButton
            android:layout_width="42dp"
            android:layout_height="40dp"
            android:id="@+id/fragment_student_home_attendance_imageButton"
            android:src="@drawable/ic_attendance"
            android:contentDescription="@string/homework_notification_icon"
            android:background="#00000000" />
    </LinearLayout>
</LinearLayout>

这是我实现onClick

的适配器
public class ClassAdapter extends ArrayAdapter<SchoolClass> implements View.OnClickListener{
private SchoolClass aClass;
public ClassAdapter(Context context, int resource, ArrayList<SchoolClass> objects) {
    super(context, resource, objects);

}

public SchoolClass getSchoolClass(){
    return this.aClass;
}

public void setSchoolClass(SchoolClass schoolClass){
    this.aClass = schoolClass;
}

@Override
public View getView(int position, View convertView, ViewGroup parent){
    View v = convertView;

    if (v == null) {
        LayoutInflater vi;
        vi = LayoutInflater.from(getContext());
        v = vi.inflate(R.layout.classes_adapter, null);
    }

    aClass = getItem(position);


    if(aClass != null){
        TextView title = (TextView) v.findViewById(R.id.fragment_student_home_classTitle_textView);
        if(title != null){
            title.setText(aClass.getTitle());
        }
        setSchoolClass(aClass);
    }
    //set buttons
    ImageButton notificationsButton = (ImageButton) v.findViewById(R.id.fragment_student_home_notification_imageButton);
    ImageButton gradesButton = (ImageButton) v.findViewById(R.id.fragment_student_home_grades_imageButton);
    ImageButton attendanceButton = (ImageButton) v.findViewById(R.id.fragment_student_home_attendance_imageButton);
    ImageButton homeworkButton = (ImageButton) v.findViewById(R.id.fragment_student_home_homework_imageButton);
    notificationsButton.setOnClickListener(this);
    gradesButton.setOnClickListener(this);
    attendanceButton.setOnClickListener(this);
    homeworkButton.setOnClickListener(this);

    return v;
}

@Override
public void onClick(View v) {
    Intent intent = new Intent(getContext(), ClassActivity.class);
    View parent = (View) v.getRootView();
    //v.getParent() returns null when I look for the textView
    TextView title = (TextView) parent.findViewById(R.id.fragment_student_home_classTitle_textView);
    System.out.println("\n\n title: " + title.getText().toString() + " \n\n");
    intent.putExtra("__CLASS_NAME__", title.getText().toString());

它填充了一个列表视图,如果我点击了fragment_student_home_attendance_imageButton,我想得到与该ClassAdapter相关联的fragment_student_home_classTitle_textView。

2 个答案:

答案 0 :(得分:0)

给你一个想法,希望这有助于解决问题:)

POST /attask/api/v5.0/project HTTP/1.1
Host: <yourdomain>.attask-ondemand.com
Content-Type: application/x-www-form-urlencoded

name=your project name&templateID=55f7...5ed2&sessionID=f9de...12c5

答案 1 :(得分:0)

好的,没关系,我明白了。

@Override
public void onClick(View v) {
    Intent intent = new Intent(getContext(), ClassActivity.class);


    //It's the parent of the parent OF THE parent where
    //the textView lies in my layout.
    View parent = (View) v.getParent().getParent().getParent();


    TextView title = (TextView) parent.findViewById(R.id.fragment_student_home_classTitle_textView);
    System.out.println("\n\n title: " + title.getText().toString() + " \n\n");
    intent.putExtra("__CLASS_NAME__", title.getText().toString());

如果有更好的方法来获得此解决方案,因为它似乎是解决问题的方法,我欢迎任何评论!