Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当使用json从php传递数据时,如何为自定义列表视图创建一个MClickListener_Java_Onitemclicklistener_Custom Lists - Fatal编程技术网

Java 当使用json从php传递数据时,如何为自定义列表视图创建一个MClickListener

Java 当使用json从php传递数据时,如何为自定义列表视图创建一个MClickListener,java,onitemclicklistener,custom-lists,Java,Onitemclicklistener,Custom Lists,我正在创建一个应用程序,其中将显示一个酒店列表,所有数据都来自MySQL,使用JSON和PHP,通过将基本适配器扩展为自定义适配器,我创建了自定义列表视图,但是,我无法为列表视图实现OnItemClickListener,因为每当用户单击列表视图的一行时,我都希望在Toast中显示该行的酒店名称。我尝试了互联网上的各种例子,但我就是不工作 适配器 public class CustomListAdapterHotel extends BaseAdapter { private Activ

我正在创建一个应用程序,其中将显示一个酒店列表,所有数据都来自MySQL,使用JSONPHP,通过将基本适配器扩展为自定义适配器,我创建了自定义
列表视图,但是,我无法为
列表视图
实现
OnItemClickListener
,因为每当用户单击列表视图的一行时,我都希望在
Toast
中显示该行的酒店名称。我尝试了互联网上的各种例子,但我就是不工作

适配器

public class CustomListAdapterHotel extends BaseAdapter {
    private Activity activity;
    private LayoutInflater inflater;
    private List<WorldsBillionaires> billionairesItems;
    ImageLoader imageLoader = AppController.getInstance().getImageLoader();


    public CustomListAdapterHotel(Activity activity, List<WorldsBillionaires> billionairesItems) {
        this.activity = activity;
        this.billionairesItems = billionairesItems;
    }


    @Override
    public int getCount() {
        return billionairesItems.size();
    }

    @Override
    public Object getItem(int location) {
        return billionairesItems.get(location);
    }

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

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

        if (inflater == null)
            inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null)
            convertView = inflater.inflate(R.layout.list_hotel, null);

        if (imageLoader == null)
            imageLoader = AppController.getInstance().getImageLoader();

        //NetworkImageView thumbNail = (NetworkImageView) convertView.findViewById(R.id.thumbnail);
        TextView hotel_name = (TextView) convertView.findViewById(R.id.hotel_name);
        TextView zone = (TextView) convertView.findViewById(R.id.zone);
        TextView contact_person = (TextView) convertView.findViewById(R.id.contact_person);
        TextView contact_number = (TextView) convertView.findViewById(R.id.contact_number);
        TextView btc_direct = (TextView) convertView.findViewById(R.id.btcdirect);

        // getting billionaires data for the row
        WorldsBillionaires m = billionairesItems.get(position);


        // name
        hotel_name.setText(String.valueOf(m.getHotel_Name()));

        zone.setText(String.valueOf(m.getHotel_Zone()));

        contact_person.setText(String.valueOf(m.getContact_Person()));

        contact_number.setText(String.valueOf(m.getContact_Number()));

        btc_direct.setText(String.valueOf(m.getBtc_Direct()));

        return convertView;
    }

}
主要活动

public class ShowHotel extends AppCompatActivity {
    private static final String TAG = MainActivity.class.getSimpleName();
    // Billionaires json url
    private ProgressDialog pDialog;
    private List<WorldsBillionaires> worldsBillionairesList = new ArrayList<WorldsBillionaires>();
    private ListView listView;
    private CustomListAdapterHotel adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_hotel);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setLogo(R.mipmap.ic_launcher);
        getSupportActionBar().setDisplayUseLogoEnabled(true);
        listView = (ListView) findViewById(R.id.list);
        adapter = new CustomListAdapterHotel(this, worldsBillionairesList);
        listView.setAdapter(adapter);
        pDialog = new ProgressDialog(this);
        // Showing progress dialog before making http request
        pDialog.setMessage("Loading...");
        pDialog.show();


        // Creating volley request obj
        JsonArrayRequest billionaireReq = new JsonArrayRequest("http://192.168.247.1/AdminBihar/getHotel.php?zone="+methods.zone,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();

                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {

                                JSONObject obj = response.getJSONObject(i);
                                WorldsBillionaires worldsBillionaires = new WorldsBillionaires();
                                worldsBillionaires.setHotel_Name(obj.getString("hotel_name"));
                                worldsBillionaires.setThumbnailUrl(obj.getString("image"));
                                worldsBillionaires.setHotel_Zone(obj.getString("zone"));
                                worldsBillionaires.setContact_Person(obj.getString("contact_person"));
                                worldsBillionaires.setContact_Number(obj.getString("contact_number"));
                                worldsBillionaires.setBtc_Direct(obj.getString("btc_direct"));

                                // adding Billionaire to worldsBillionaires array
                                worldsBillionairesList.add(worldsBillionaires);

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        }

                        // notifying list adapter about data changes
                        // so that it renders the list view with updated data
                        adapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hidePDialog();
            }
        });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(billionaireReq);


    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        hidePDialog();
    }

    private void hidePDialog() {
        if (pDialog != null) {
            pDialog.dismiss();
            pDialog = null;
        }
    }
}
公共级ShowHotel活动{
私有静态最终字符串标记=MainActivity.class.getSimpleName();
//亿万富翁json网址
私人对话;
私有列表worldsBillionairesList=newarraylist();
私有列表视图列表视图;
私人客户列表适配器酒店适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u show\u hotel);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_启动器);
getSupportActionBar().setDisplayUseLogoEnabled(true);
listView=(listView)findViewById(R.id.list);
adapter=新的CustomListAdapterHotel(此为WorldsBillionAirList);
setAdapter(适配器);
pDialog=新建进度对话框(此对话框);
//在发出http请求之前显示进度对话框
设置消息(“加载…”);
pDialog.show();
//创建截击请求对象
JsonArrayRequest亿万AIREREQ=新的JsonArrayRequest(“http://192.168.247.1/AdminBihar/getHotel.php?zone=“+方法.区域,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
hidePDialog();
//解析json
对于(int i=0;i
因此,在获取json数据后,在显示列表的活动中执行以下操作:

public class DisplayListView extends AppCompatActivity {
    ListView listView;

protected void onCreate(){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_list_view);

    listView = (ListView) findViewById(R.id.listview);
    hotelAdapter = new CustomListAdapterHotel (this, R.layout.row_layout);
    listView.setAdapter(hotelAdapter);

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

            Model stuff = (Model) hotelAdapter.getItem(position);
            String hotelName = stuff.getHotel_Name(); 

            Toast.makeText(getApplicationContext(), hotelName, Toast.LENGTH_SHORT).show();


        }
    });
公共类DisplayListView扩展了AppCompative活动{
列表视图列表视图;
受保护的void onCreate(){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u display\u list\u view);
listView=(listView)findViewById(R.id.listView);
hotelAdapter=新的CustomListAdapterHotel(此,R.layout.row_布局);
setAdapter(hotelAdapter);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Model stuff=(Model)hotelAdapter.getItem(position);
String hotelName=stuff.getHotel_Name();
Toast.makeText(getApplicationContext(),hotelName,Toast.LENGTH_SHORT).show();
}
});

在这里,这对我很有用:)

所以在获取json数据后,在显示列表的活动中,执行以下操作:

public class DisplayListView extends AppCompatActivity {
    ListView listView;

protected void onCreate(){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_list_view);

    listView = (ListView) findViewById(R.id.listview);
    hotelAdapter = new CustomListAdapterHotel (this, R.layout.row_layout);
    listView.setAdapter(hotelAdapter);

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

            Model stuff = (Model) hotelAdapter.getItem(position);
            String hotelName = stuff.getHotel_Name(); 

            Toast.makeText(getApplicationContext(), hotelName, Toast.LENGTH_SHORT).show();


        }
    });
公共类DisplayListView扩展了AppCompative活动{
列表视图列表视图;
受保护的void onCreate(){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u display\u list\u view);
listView=(listView)findViewById(R.id.listView);
hotelAdapter=新的CustomListAdapterHotel(此,R.layout.row_布局);
setAdapter(hotelAdapter);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Model stuff=(Model)hotelAdapter.getItem(position);
String hotelName=stuff.getHotel_Name();
Toast.makeText(getApplicationContext(),hotelName,Toast.LENGTH_SHORT).show();
}
});
那里,,