Java 如何在片段中声明适配器?
我要在fragmenttab中创建一个listview。我已经使用教程创建了界面。在视频中,您可以看到应用程序。我不确定在哪里声明和声明适配器。现在我在fragmenttab1活动中声明它自己,但这会导致出现错误,说“未定义的构造函数”和“类型FragmentTab2中未定义的方法findViewById(int)”。有人能帮我吗?这将真正促进我的学校项目。提前谢谢 适配器的代码:Java 如何在片段中声明适配器?,java,android,android-fragments,declaration,listadapter,Java,Android,Android Fragments,Declaration,Listadapter,我要在fragmenttab中创建一个listview。我已经使用教程创建了界面。在视频中,您可以看到应用程序。我不确定在哪里声明和声明适配器。现在我在fragmenttab1活动中声明它自己,但这会导致出现错误,说“未定义的构造函数”和“类型FragmentTab2中未定义的方法findViewById(int)”。有人能帮我吗?这将真正促进我的学校项目。提前谢谢 适配器的代码: import android.os.Bundle; import android.view.LayoutI
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.actionbarsherlock.app.SherlockFragment;
public class FragmentTab2 extends SherlockFragment {
private String[]names = {"Video", "Audio"};
private String[]urls = {"http://c172200.r0.cf3.rackcdn.com/104824.mp4", "http://c172200.r0.cf3.rackcdn.com/106973.mp4"};
@Override
public View onCreateView(LayoutInflater inflater1, ViewGroup container,
Bundle savedInstanceState) {
// Get the view from fragmenttab2.xml
View view = inflater1.inflate(R.layout.fragmenttab2, container, false);
return view;
ListView lv = (ListView)findViewById(R.id.List);
VideoAdapter adapter = new VideoAdapter(this, names, urls);
lv.setAdapter(adapter);
}
}
导入android.content.Context;
导入android.content.Intent;
导入android.net.Uri;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.TextView;
公共类VideoAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终字符串[]名称;
私有最终字符串[]URL;
公共视频适配器(上下文上下文、字符串[]名称、字符串[]URL){
super(上下文、R.layout.videorow、名称);
this.context=上下文;
this.names=名称;
this.url=url;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图行视图=充气机。充气(R.layout.videorow,父级,false);
TextView TextView=(TextView)rowView.findViewById(R.id.textView2);
Button Button=(Button)rowView.findViewById(R.id.grootheden);
setText(名称[位置]);
setTag(url[position]);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(意向.行动\视图);
intent.setDataAndType(Uri.parse((String)v.getTag(),“video/mp4”);
背景。开始触觉(意图);
}
});
返回行视图;
}
}
试试这个:
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
public class VideoAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] names;
private final String[] urls;
public VideoAdapter(Context context, String[] names, String[] urls) {
super(context, R.layout.videorow, names);
this.context = context;
this.names = names;
this.urls = urls;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.videorow, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.textView2);
Button button = (Button) rowView.findViewById(R.id.grootheden);
textView.setText(names[position]);
button.setTag(urls[position]);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse((String) v.getTag()), "video/mp4");
context.startActivity(intent);
}
});
return rowView;
}
}
应该是:
ListView lv = (ListView)findViewById(R.id.List);
编辑:
此外,还需要在onCreate()的末尾返回视图
您的代码,已修复: 谢谢!原来“this”应该是“getActivity()”。但是谢谢你的帮助!
ListView lv = (ListView) view.findViewById(R.id.List);
return view;
public class FragmentTab2 extends SherlockFragment {
private String[]names = {"Video", "Audio"};
private String[]urls = {"http://c172200.r0.cf3.rackcdn.com/104824.mp4", "http://c172200.r0.cf3.rackcdn.com/106973.mp4"};
@Override
public View onCreateView(LayoutInflater inflater1, ViewGroup container,
Bundle savedInstanceState) {
// Get the view from fragmenttab2.xml
View view = inflater1.inflate(R.layout.fragmenttab2, container, false);
ListView lv = (ListView) view.findViewById(R.id.List);
VideoAdapter adapter = new VideoAdapter(this, names, urls);
lv.setAdapter(adapter);
return view;
}
}