Java 如何在android中将listview适配器项单击listener片段化?

Java 如何在android中将listview适配器项单击listener片段化?,java,android,listview,fragment,adapter,Java,Android,Listview,Fragment,Adapter,我想从listview适配器项目视图单击侦听器转到包含我要在我要去的片段中使用的额外详细信息的片段..我使用此列表视图适配器类。我想从listview适配器项目视图单击侦听器转到包含我要在我要去的片段中使用的额外详细信息的片段..我使用此列表视图适配器班级 public class ListViewAdapter extends BaseAdapter { // Declare Variables Context context; LayoutInflater infl

我想从listview适配器项目视图单击侦听器转到包含我要在我要去的片段中使用的额外详细信息的片段..我使用此列表视图适配器类。我想从listview适配器项目视图单击侦听器转到包含我要在我要去的片段中使用的额外详细信息的片段..我使用此列表视图适配器班级

public class ListViewAdapter extends BaseAdapter {

    // Declare Variables
    Context context;
    LayoutInflater inflater;
    ArrayList<HashMap<String, String>> data;

    HashMap<String, String> resultp = new HashMap<String, String>();
    public ListViewAdapter(Context context, ArrayList<HashMap<String, String>> arraylist) {
        this.context = context;
        data = arraylist;
    }
  @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        // Declare Variables
        TextView ip;
        TextView port;

        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View itemView = inflater.inflate(R.layout.listview_item, parent, false);
        // Get the position
        resultp = data.get(position);

        // Locate the TextViews in listview_item.xml
        ip = (TextView) itemView.findViewById(R.id.ip);
        port = (TextView) itemView.findViewById(R.id.port);

        // Locate the ImageView in listview_item.xml

        // Capture position and set results to the TextViews
        ip.setText(resultp.get(AddFragment.ip));
        port.setText(resultp.get(AddFragment.port));
        // Capture position and set results to the ImageView
        // Passes flag images URL into ImageLoader.class
        // Capture ListView item click
        itemView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // Get the position
                resultp = data.get(position);
                Intent intent = new Intent(context, MainActivity.class);
                // Pass all data rank
                intent.putExtra("ip", resultp.get(AddFragment.ip));
                // Pass all data country
                intent.putExtra("port", resultp.get(AddFragment.port));
                intent.putExtra("uname", resultp.get(AddFragment.uname));
                intent.putExtra("password", resultp.get(AddFragment.password));

                Log.e("uname: ", "> " + resultp.get(AddFragment.uname));
                Log.e("password: ", "> " + resultp.get(AddFragment.password));
                Log.e("ip: ", "> " + resultp.get(AddFragment.ip));
                Log.e("port: ", "> " + resultp.get(AddFragment.port));



                // Pass all data population
                // Pass all data flag
                // Start SingleItemView Class
                context.startActivity(intent);

            }
        });
        return itemView;
    }
公共类ListViewAdapter扩展了BaseAdapter{
//声明变量
语境;
充气机;
阵列列表数据;
HashMap resultp=新的HashMap();
公共ListViewAdapter(上下文上下文,ArrayList ArrayList){
this.context=上下文;
数据=数组列表;
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//声明变量
文本视图ip;
文本视图端口;
充气器=(充气器)上下文
.getSystemService(上下文布局\充气机\服务);
视图项视图=充气机。充气(R.layout.listview\u项,父项,false);
//获得职位
resultp=data.get(位置);
//在listview_item.xml中找到文本视图
ip=(TextView)itemView.findViewById(R.id.ip);
port=(TextView)itemView.findViewById(R.id.port);
//在listview_item.xml中找到ImageView
//捕获位置并将结果设置为文本视图
setText(resultp.get(AddFragment.ip));
setText(resultp.get(AddFragment.port));
//捕获位置并将结果设置为ImageView
//将标志图像URL传递到ImageLoader.class
//捕获列表视图项单击
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//获得职位
resultp=data.get(位置);
意向意向=新意向(上下文,MainActivity.class);
//通过所有数据等级
intent.putExtra(“ip”,resultp.get(AddFragment.ip));
//通过所有国家/地区的数据
intent.putExtra(“端口”,resultp.get(AddFragment.port));
intent.putExtra(“uname”,resultp.get(AddFragment.uname));
intent.putExtra(“密码”,resultp.get(AddFragment.password));
Log.e(“uname:”,“>”+resultp.get(AddFragment.uname));
Log.e(“密码:”,“>”+resultp.get(AddFragment.password));
Log.e(“ip:”,“>”+resultp.get(AddFragment.ip));
Log.e(“端口:”,“>”+resultp.get(AddFragment.port));
//通过所有数据填充
//传递所有数据标志
//启动SingleItemView类
背景。开始触觉(意图);
}
});
返回项目视图;
}
因此,我如何才能转到片段而不是活动。 我想在片段中加入额外的细节。那么,我该怎么做呢?

试试这个

((Activity) mContext).getFragmentManager();

 itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Fragment fragment = new CallThisFragment();
            FragmentManager fragmentManager = ((Activity) mContext).getFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.main_activity, fragment).commit();
        }
    });   
并使用bundle将数据传递给片段类

使用以下代码转到listview适配器项单击片段中的侦听器

relaylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int
    position, long id) {


            HashMap<String, String> o = (HashMap<String, String>)
    relaylist.getItemAtPosition(position);



            Log.e("ip: ", "> " +  o.get("ip"));
            Log.e("port: ", "> " +  o.get("port"));
            Log.e("uname: ", "> " +  o.get("uname"));
            Log.e("password: ", "> " +  o.get("password"));


            ControlFragment fragment = new ControlFragment();

            FragmentTransaction transaction =
    getFragmentManager().beginTransaction();


            Log.e("ip: ", "> " +  o.get("ip"));
            Log.e("port: ", "> " +  o.get("port"));
            Log.e("uname: ", "> " +  o.get("uname"));
            Log.e("password: ", "> " +  o.get("password"));
            transaction.replace(R.id.mainFrame, fragment );
            Bundle bundle = new Bundle();
            bundle.putString("ip", o.get("ip"));
            bundle.putString("port", o.get("port"));
            bundle.putString("uname", o.get("uname"));
            bundle.putString("password", o.get("password"));
            fragment.setArguments(bundle);
            transaction.commit();
        }
    });
relaylist.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型
位置(长id){
HashMap o=(HashMap)
relaylist.getItemAtPosition(位置);
Log.e(“ip:”,“>”+o.get(“ip”);
Log.e(“端口:”,“>”+o.get(“端口”);
Log.e(“uname:”,“>”+o.get(“uname”);
Log.e(“密码:”,“>”+o.get(“密码”);
ControlFragment=新的ControlFragment();
零碎交易=
getFragmentManager().beginTransaction();
Log.e(“ip:”,“>”+o.get(“ip”);
Log.e(“端口:”,“>”+o.get(“端口”);
Log.e(“uname:”,“>”+o.get(“uname”);
Log.e(“密码:”,“>”+o.get(“密码”);
事务.replace(R.id.mainFrame,fragment);
Bundle=新Bundle();
bundle.putString(“ip”,o.get(“ip”);
bundle.putString(“端口”,o.get(“端口”);
bundle.putString(“uname”,o.get(“uname”);
bundle.putString(“密码”,o.get(“密码”);
fragment.setArguments(bundle);
commit();
}
});

您的片段具有listview,您希望从片段中的适配器获得详细信息?在这种情况下,您可以使用接口作为片段的回调检查此使用回调(您可以将其传递给构造函数)它将数据传回您的活动,然后处理从那里切换片段的逻辑。是的…fragmentgive me Example中的我的listview在第一行给我错误..fragment fragment=new ControlFragment();FragmentManager FragmentManager=((活动)上下文)。getFragmentManager();提供类似不兼容类型的错误..必需:找到android.app.fragment:com.example.lenovo.controlapp.ControlFragment fragmentManager.beginTransaction().replace(R.id.mainFrame,fragment).commit();请更改您的片段导入,无论是其android.app.fragment还是android.support.v4.app.fragment