当我使用单击查看侦听器时,Android列表视图未显示

当我使用单击查看侦听器时,Android列表视图未显示,android,Android,我想将单击侦听器添加到我的列表视图中。但当我添加click listener以启动新的意图时,列表视图消失了 我添加了list view.setonItemclicklistener,但失败 显示 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="fi.com.cgulf" > &

我想将单击侦听器添加到我的列表视图中。但当我添加click listener以启动新的意图时,列表视图消失了

我添加了list view.setonItemclicklistener,但失败

显示


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="fi.com.cgulf" >
<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
            <activity android:name=".SplashActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />   <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".DisplayActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar"/>
        <activity android:name=".DetailsActivity"
            android:theme="@style/AppTheme.NoActionBar"/>
        <activity android:name=".HomeActivity"
            android:theme="@style/AppTheme.NoActionBar"/>
    </application>
</manifest>


HomeActivity.java


package fi.com.cgulf;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ListView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

import fi.com.cgulf.adapter.MyArrayAdapter;
import fi.com.cgulf.model.MyDataModel;
import fi.com.cgulf.parser.JSONParser;
import fi.com.cgulf.utils.InternetConnection;
import fi.com.cgulf.utils.Keys;

public class HomeActivity extends AppCompatActivity {
    public ListView listView;
    public ArrayList<MyDataModel> list;
    public MyArrayAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        ImageButton img1= (ImageButton)findViewById(R.id.imageButton);
        ImageButton img2= (ImageButton)findViewById(R.id.imageButton2);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        list = new ArrayList<>();
        if (InternetConnection.checkConnection(getApplicationContext())) {
            new GetDataTask().execute();

        } else {
        }
    }
    public void onClickb1(View view)
    {
        Intent homeIntent =new Intent(HomeActivity.this,DisplayActivity.class);
        startActivity(homeIntent);
        finish();
    }
    public void onClickb2(View view)
    {
        Intent homeIntent =new Intent(HomeActivity.this,DisplayActivity.class);
        startActivity(homeIntent);
        finish();
    }

class GetDataTask extends AsyncTask<Void, Void, Void> {

    ProgressDialog dialog;
    int jIndex;
    int x;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        x=list.size();

        if(x==0)
            jIndex=0;
        else
            jIndex=x;


        dialog = new ProgressDialog(HomeActivity.this);
        dialog.setTitle("Please wait..");
        dialog.setMessage("Loading Data");
        dialog.show();
    }

    @Nullable
    @Override
    protected Void doInBackground(Void... params) {

        /**
         * Getting JSON Object from Web Using okHttp
         */
        JSONObject jsonObject = JSONParser.getDataFromWeb();

        try {
            /**
             * Check Whether Its NULL???
             */
            if (jsonObject != null) {
                /**
                 * Check Length...
                 */
                if(jsonObject.length() > 0) {
                    /**
                     * Getting Array named "contacts" From MAIN Json Object
                     */
                    JSONArray array = jsonObject.getJSONArray(Keys.KEY_CONTACTS);

                    /**
                     * Check Length of Array...
                     */
                    int lenArray = array.length();
                    if(lenArray > 0) {
                        for( ; jIndex < lenArray; jIndex++) {

                            /**
                             * Creating Every time New Object
                             * and
                             * Adding into List
                             */
                            MyDataModel model = new MyDataModel();

                            /**
                             * Getting Inner Object from contacts array...
                             * and
                             * From that We will get Name of that Contact
                             *
                             */
                            JSONObject innerObject = array.getJSONObject(jIndex);
                            String name = innerObject.getString(Keys.KEY_NAME);
                            String country = innerObject.getString(Keys.KEY_COUNTRY);

                            /**
                             * Getting Object from Object "phone"
                             */
                            //JSONObject phoneObject = innerObject.getJSONObject(Keys.KEY_PHONE);
                            //String phone = phoneObject.getString(Keys.KEY_MOBILE);

                            model.setName(name);
                            model.setCountry(country);

                            /**
                             * Adding name and phone concatenation in List...
                             */
                            list.add(model);
                        }
                    }
                }
            } else {

            }
        } catch (JSONException je) {
            Log.i(JSONParser.TAG, "" + je.getLocalizedMessage());
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        dialog.dismiss();
        /**
         * Checking if List size if more than zero then
         * Update ListView
         */
    }
}
}


package fi.com.cgulf;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import java.util.ArrayList;

import fi.com.cgulf.adapter.MyArrayAdapter;
import fi.com.cgulf.model.MyDataModel;


public class DisplayActivity extends HomeActivity {
    public static ArrayList<MyDataModel> list1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list1=list;
        listView = (ListView) findViewById(R.id.listView);
        adapter = new MyArrayAdapter(this, list1);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                Intent intent = new Intent(DisplayActivity.this, DetailsActivity.class);
                intent.putExtra("pos", position);
                startActivity(intent);
                finish();

            }
        });
    }
}


包fi.com.cgulf;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.util.Log;
导入android.view.view;
导入android.widget.ImageButton;
导入android.widget.ListView;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.util.ArrayList;
导入fi.com.cgulf.adapter.MyArrayAdapter;
导入fi.com.cgulf.model.MyDataModel;
导入fi.com.cgulf.parser.JSONParser;
导入fi.com.cgulf.utils.InternetConnection;
导入fi.com.cgulf.utils.Keys;
公共类HomeActivity扩展了AppCompatActivity{
公共列表视图列表视图;
公共阵列列表;
公共MyArrayAdapter适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
ImageButton img1=(ImageButton)findViewById(R.id.ImageButton);
ImageButton img2=(ImageButton)findViewById(R.id.imageButton2);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
列表=新的ArrayList();
if(InternetConnection.checkConnection(getApplicationContext())){
新建GetDataTask().execute();
}否则{
}
}
公共void onClickb1(视图)
{
Intent homeentent=新的Intent(HomeActivity.this,DisplayActivity.class);
startActivity(家庭意向);
完成();
}
公共void onClickb2(视图)
{
Intent homeentent=新的Intent(HomeActivity.this,DisplayActivity.class);
startActivity(家庭意向);
完成();
}
类GetDataTask扩展了AsyncTask{
进程对话;
int jIndex;
int x;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
x=list.size();
如果(x==0)
jIndex=0;
其他的
jIndex=x;
dialog=新建ProgressDialog(HomeActivity.this);
dialog.setTitle(“请稍候”);
setMessage(“加载数据”);
dialog.show();
}
@可空
@凌驾
受保护的Void doInBackground(Void…参数){
/**
*使用okHttp从Web获取JSON对象
*/
JSONObject JSONObject=JSONParser.getDataFromWeb();
试一试{
/**
*检查它是否为空???
*/
if(jsonObject!=null){
/**
*检查长度。。。
*/
if(jsonObject.length()>0){
/**
*从主Json对象获取名为“contacts”的数组
*/
JSONArray数组=jsonObject.getJSONArray(KEY.KEY\u联系人);
/**
*检查数组的长度。。。
*/
int lenArray=array.length();
如果(lenArray>0){
对于(;jIndex
MyArrayAdapter.java


package fi.com.cgulf.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.view.menu.MenuView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import java.util.List;

import fi.com.cgulf.R;
import fi.com.cgulf.model.MyDataModel;

public class MyArrayAdapter extends ArrayAdapter<MyDataModel>  {

    List<MyDataModel> modelList;
    Context context;
    private LayoutInflater mInflater;
    // Constructors
    public MyArrayAdapter(Context context, List<MyDataModel> objects) {
        super(context, 0, objects);
        this.context = context;
        this.mInflater = LayoutInflater.from(context);
        modelList = objects;
    }

    @Override
    public MyDataModel getItem(int position) {
        return modelList.get(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder vh;
        if (convertView == null) {
            View view = mInflater.inflate(R.layout.activitysection, parent, false);
            vh = ViewHolder.create((RelativeLayout) view);
            view.setTag(vh);
        } else {
            vh = (ViewHolder) convertView.getTag();
        }

        MyDataModel item = getItem(position);

        vh.textViewName.setText(item.getName());
        vh.textViewCountry.setText(item.getCountry());

        return vh.rootView;
    }

    private static class ViewHolder {
        public final RelativeLayout rootView;

        public final TextView textViewName;
        public final TextView textViewCountry;

        private ViewHolder(RelativeLayout rootView, TextView textViewName, TextView textViewCountry) {
            this.rootView = rootView;
            this.textViewName = textViewName;
            this.textViewCountry = textViewCountry;

        }
        public static ViewHolder create(RelativeLayout rootView) {
            TextView textViewName = (TextView) rootView.findViewById(R.id.textViewName);
            TextView textViewCountry = (TextView) rootView.findViewById(R.id.textViewCountry);
            return new ViewHolder(rootView, textViewName, textViewCountry);
        }

        }
    }

包fi.com.cgulf.adapter;
导入android.content.Context;
导入android.support.annotation.NonNull;
导入android.support.v7.view.menu.MenuView;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.support.v7.widget.RecyclerView.ViewHolder;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
感应电动机
// declare interface object  
private CallBackListner listner;
// Constructors
public MyArrayAdapter(Context context, List<MyDataModel> objects, 
                                               CallBackListner listner) {
    super(context, 0, objects);
    this.context = context;
    this.mInflater = LayoutInflater.from(context);
    modelList = objects;
    this.listner = listner;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder vh;
    if (convertView == null) {
        View view = mInflater.inflate(R.layout.activitysection, parent,   
                                                                  false);
        vh = ViewHolder.create((RelativeLayout) view);
        view.setTag(vh);
    } else {
        vh = (ViewHolder) convertView.getTag();
    }

    MyDataModel item = getItem(position);

    vh.textViewName.setText(item.getName());
    vh.textViewCountry.setText(item.getCountry());
    vh.textViewName.setOnClickListner(....
    // call the interface callback
    listner.onCallback(position);
    } 
    return vh.rootView;
}
public class DisplayActivity extends HomeActivity {
public static ArrayList<MyDataModel> list1;
private CallBackListner listner;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   // initialize the interface here
    listner = new CallBackListner({
    @override
    public void onCallback(int pos){
      // here you get the current position of the item, do your stuff

    }
    })
}
public interface CallBackListner{
 void onCallback(int pos);
}