Android:无法访问Fragment中存在的ListView中的按钮

时间:2015-01-06 13:49:49

标签: android button android-fragments android-listview

我正在尝试访问列表视图中存在的按钮。在按钮上,按钮的值应更改为" Hello"

listview是片段的一部分。

适配器接受图像的值,文件名和文件的创建日期。 除了这三个元素外,还有一个按钮(我将用它来删除文件)

但我无法访问该按钮。

public class FragmentC extends Fragment implements AdapterView.OnItemClickListener{

ListView list;
public FragmentC() {
    // Required empty public constructor
}
String[] days;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    String path = Environment.getExternalStorageDirectory().toString()+"/Notate";
    File f = new File(path);
    File file[] = f.listFiles();
    days=new String[file.length];
    Integer[] imageId=new Integer[file.length];
    String[] dateTime=new String[file.length];

    for (int i=0; i < file.length; i++)
    {
        String temp=file[i].getName();
        String temp2=temp.substring(0,temp.length()-4);
        Date lastModDate = new Date(file[i].lastModified());

        days[i]=temp2;
        imageId[i]=R.drawable.ic_launcher;
        dateTime[i]=lastModDate.toString().substring(0,lastModDate.toString().length()-14);
    }
    final View contextView = inflater.inflate(R.layout.fragment_fragment_c,container,false);
    CustomList adapter = new
            CustomList(this.getActivity(), days, imageId,dateTime);
    list=(ListView) contextView.findViewById(R.id.listView);
    list.setAdapter(adapter);
    list.setOnItemClickListener(this);
    return contextView;
    }

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        final Button b1=(Button) view.findViewById(R.id.button1);
        b1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                b1.setText("Hello");
            }
        });
    }
}

2 个答案:

答案 0 :(得分:0)

在您的CustomList类中,转到getview方法并在该方法集内部单击按钮。 在那个班级,你可能会像

那样
 viewHolder.button=(Button)convertView.findViewById(R.id.button);

所以在下面的getview方法中,上面的行就像

  viewHolder.button.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
             viewHolder.button.setText("Hello");
        }
    });

答案 1 :(得分:0)

在&#39; getView&#39;中尝试您的代码您的CustomList适配器,如此

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    .............
     ....


    final Button b1=(Button) view.findViewById(R.id.button1);
    b1.setOnClickListener(new View.OnClickListener(){
        @Override 
        public void onClick(View v) {
            b1.setText("Hello");
        } 
    }); 
    return convertView;
}