Java 如何在片段中声明适配器?

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

我要在fragmenttab中创建一个listview。我已经使用教程创建了界面。在视频中,您可以看到应用程序。我不确定在哪里声明和声明适配器。现在我在fragmenttab1活动中声明它自己,但这会导致出现错误,说“未定义的构造函数”和“类型FragmentTab2中未定义的方法findViewById(int)”。有人能帮我吗?这将真正促进我的学校项目。提前谢谢

适配器的代码:

    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;
    }
}