簡體   English   中英

Android:從DialogFragment為ListView中的TextView設置文本

[英]Android: set text for TextView in ListView from DialogFragment

我從DialogFragment為ListView設置文本時遇到問題。 我的代碼如下:-我有一個TimePickerFragment如下

package com.working.unility;

import java.util.Calendar;

import com.working.dailyreminder.R;

import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.text.format.DateFormat;
import android.widget.TextView;
import android.widget.TimePicker;

public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener{

    private int hour;
    private int minute;

    public  TimePickerFragment() {

    }
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        final Calendar ca = Calendar.getInstance();
        hour = ca.get(Calendar.HOUR_OF_DAY);
        minute = ca.get(Calendar.MINUTE);

        return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
    }

    @Override
    public void onTimeSet(TimePicker arg0, int hour, int minute) {
        TextView textView = (TextView) getActivity()().findViewById(R.id.content);
        textView.setText(" " + hour);
    }

}

和TaskFragment類調用TimePickerFragment如下

import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.working.unility.TimePickerFragment;

public class TaskFragment extends Fragment {

    private ListView mListView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View rootView = inflater.inflate(R.layout.task, container, false);
        mListView = (ListView) rootView.findViewById(R.id.list_task_item);
        String[] list_title = getResources().getStringArray(R.array.list_title_task);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), R.layout.task_row, R.id.title, list_title);
        mListView.setAdapter(adapter);

        mListView.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                TimePickerFragment timePicker = new TimePickerFragment();
                timePicker.show(getFragmentManager(), "Time set");
            }
        });

        return rootView;
    }   

}

在ListView中,我有2個TextView包括:標題和內容。 現在,我想通過如上所述的調用TimePickerFragment將文本設置為ListView的TextView ID內容,但是TimePickerFragment無法識別內容ID的行,並且始終為ListView中的第一行設置文本。 那么我該如何解決這個問題呢?

謝謝

您可以嘗試將視圖傳遞給構造函數中的TimePickerFragment 然后在onTimeSet方法中,在視圖上調用setText

public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener{

    private int hour;
    private int minute;

    private View mView;

    public  TimePickerFragment(View view) {
        mView = view;
    }
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        final Calendar ca = Calendar.getInstance();
        hour = ca.get(Calendar.HOUR_OF_DAY);
        minute = ca.get(Calendar.MINUTE);

        return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
    }

    @Override
    public void onTimeSet(TimePicker arg0, int hour, int minute) {
        if(mView instanceof TextView)
            ((TextView) mView).setText(" " + hour);
    }
}

像這樣在OnItemClickListener更改呼叫

public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
    TimePickerFragment timePicker = new TimePickerFragment(view);
    timePicker.show(getFragmentManager(), "Time set");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM