Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 使用Android AdapterView.OnItemClick Listener重定向到新的空白活动_Java_Android_Listview_Adapter_Onclicklistener - Fatal编程技术网

Java 使用Android AdapterView.OnItemClick Listener重定向到新的空白活动

Java 使用Android AdapterView.OnItemClick Listener重定向到新的空白活动,java,android,listview,adapter,onclicklistener,Java,Android,Listview,Adapter,Onclicklistener,嘿,所以我按照教程构建了一个列表视图。所有内容都已填充,希望单击其中一个项目并将其重定向到另一个空白活动。列表视图中的所有项目都是在“我的仪表板”类中创建和填充的: import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.Acti

嘿,所以我按照教程构建了一个列表视图。所有内容都已填充,希望单击其中一个项目并将其重定向到另一个空白活动。列表视图中的所有项目都是在“我的仪表板”类中创建和填充的:

    import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;


public class Dashboard extends ActionBarActivity {

    private List<DashboardItems> myDash = new ArrayList<DashboardItems>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dashboard);

        populateDashboardItemList();
        populateDashboardListView();
        dashboardOnclick();

    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_dashboard, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        switch (item.getItemId()) {
            case R.id.homescreen:
                homescreenItem();
                return true;
            case R.id.dashboard:
                dashboardItem();
                return true;
            case R.id.about:
                aboutItem();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    private void homescreenItem(){
        startActivity(new Intent(Dashboard.this, Home.class));
    }

    private void dashboardItem(){
        startActivity(new Intent(Dashboard.this, Dashboard.class));
    }

    private void aboutItem(){
        new AlertDialog.Builder(this)
                .setTitle("About")
                .setMessage("Welcome to Save Me! An interactive and intuitive way to protect yourself during emergency situations and keep your location privacy. Made for a Dissertation and Developed by Ankhit Sharma")
                .setNeutralButton("OK" , new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                }).show();
    }

    private void populateDashboardItemList() {
        myDash.add(new DashboardItems("Profile" , "Use this to create/edit your profile" , R.drawable.profile));
        myDash.add(new DashboardItems("Location" , "Use this to set/view your true/dummy location" , R.drawable.location));
        myDash.add(new DashboardItems("Emergency Contacts" , "Use this to select/view your emergency contacts" , R.drawable.contacts));
    }

    private void populateDashboardListView() {
        ArrayAdapter<DashboardItems> adapter = new myDashboardAdapter();
        ListView list = (ListView) findViewById(R.id.dashboardListview);
        list.setAdapter(adapter);
    }

    private void dashboardOnclick() {
        ListView list = (ListView) findViewById(R.id.dashboardListview);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) {

                DashboardItems clickedDash = myDash.get(position);
                String message = "You clicked position" + position
                        + "which is" + clickedDash.getItemName();
                Toast.makeText(Dashboard.this, message, Toast.LENGTH_LONG).show();
            }
        });
    }

    private class myDashboardAdapter extends ArrayAdapter<DashboardItems>{

        public myDashboardAdapter(){
            super(Dashboard.this, R.layout.dashboarditemslayout, myDash);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
           //This makes sure we have a view to work with
            View itemView = convertView;
            if (itemView == null){
                itemView = getLayoutInflater().inflate(R.layout.dashboarditemslayout, parent, false);
        }

           //Find DashboardItem to work with

            DashboardItems currentDashboardItems = myDash.get(position);

           //Image Icon
            ImageView imageView = (ImageView)itemView.findViewById(R.id.dashboardicon);
            imageView.setImageResource(currentDashboardItems.getItemID());

            //Profile
            TextView profView = (TextView)itemView.findViewById(R.id.dashtextprofile);
            profView.setText(currentDashboardItems.getItemName());

            //Description
            TextView descView = (TextView)itemView.findViewById(R.id.dashtextprofiledescription);
            descView.setText(currentDashboardItems.getItemDescription());


           return itemView;
    }


    }
}
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.ActionBarActivity;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.List;
公共类仪表板扩展了ActionBarActivity{
private List myDash=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_仪表板);
填充的AshBoardItemList();
已填充AshBoardListView();
仪表板单击();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单\仪表板菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
开关(item.getItemId()){
案例R.id.主屏幕:
家庭用品();
返回true;
案例R.id.仪表板:
仪表板项();
返回true;
案例R.id.关于:
aboutItem();
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
私人无效住宅{
startActivity(新意图(Dashboard.this、Home.class));
}
专用无效仪表板项(){
startActivity(新意图(Dashboard.this、Dashboard.class));
}
个人资料{
新建AlertDialog.Builder(此)
.setTitle(“关于”)
.setMessage(“欢迎拯救我!这是一种在紧急情况下保护自己并保持位置隐私的交互式直观方法。为论文制作,由Ankhit Sharma开发”)
.setNeutralButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
}
}).show();
}
private void populateDashboardItemList(){
添加(新的仪表板项目(“配置文件”,“使用它创建/编辑您的配置文件”,R.drawable.Profile));
添加(新的仪表板项目(“位置”,“使用此设置/查看您的真实/虚拟位置”,R.drawable.Location));
myDash.add(新的仪表板项目(“紧急联系人”,“使用此选项选择/查看您的紧急联系人”,R.drawable.Contacts));
}
私有无效已填充AshBoardListView(){
ArrayAdapter=新的myDashboardAdapter();
ListView列表=(ListView)findViewById(R.id.dashboardListview);
list.setAdapter(适配器);
}
专用void仪表板onclick(){
ListView列表=(ListView)findViewById(R.id.dashboardListview);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图已单击、整型位置、长id){
仪表板项目clickedDash=myDash.get(位置);
String message=“您单击了位置”+位置
+“它是”+clickedDash.getItemName();
Toast.makeText(Dashboard.this、message、Toast.LENGTH_LONG.show();
}
});
}
私有类myDashboardAdapter扩展了ArrayAdapter{
公共myDashboardAdapter(){
super(Dashboard.this、R.layout.dashboarditemslayout、myDash);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//这确保我们有一个合作的视角
视图项视图=转换视图;
如果(itemView==null){
itemView=GetLayoutFlater()。充气(R.layout.dashboarditemslayout,父项,false);
}
//查找要使用的仪表板项
DashboardItems currentDashboardItems=myDash.get(位置);
//图像图标
ImageView ImageView=(ImageView)itemView.findViewById(R.id.dashboardicon);
setImageResource(currentDashboardItems.getItemID());
//侧面图
TextView profView=(TextView)itemView.findViewById(R.id.dashtextprofile);
setText(currentDashboardItems.getItemName());
//描述
TextView descView=(TextView)itemView.findViewById(R.id.dashtextprofiledescription);
descView.setText(currentDashboardItems.getItemDescription());
返回项目视图;
}
}
}
现在在函数OnItemClick中,我尝试了不同的组合,以使它引用另一个类(my UserProfile.java),但它不起作用。当前功能单击它并显示项目的位置和各自的名称以及消息。我想知道您是否可以告诉我启动intent for adapter view的正确方法,因为它对我来说是全新的

UserProfile.java类是一个空白活动

注:除了以下事实之外,McClick和OnClick的主要区别是什么
private void dashboardOnclick() {
    ListView list = (ListView) findViewById(R.id.dashboardListview);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) {

            DashboardItems clickedDash = myDash.get(position);
            String message = "You clicked position" + position
                    + "which is" + clickedDash.getItemName();
            Toast.makeText(Dashboard.this, message, Toast.LENGTH_LONG).show();
            Intent intent;
            // i do not know how your dashitems are declared
            // but the idea here is you have already gotten the clicked item so what you do is compare them
           // with the available item you have in your dasboarditem like this
           if(clickedDash ==DashboardItems.Profile){ // assuming DashboardItems.Profile is your profile for profile item
              intent = new Intent(Dashboard.this,UserProfile.class); // you place your intent here in the onitemclick method, in the if equal profile condition
            }else if(clickedDash==DashboardItems.Location){ // you can continue with the others, also here
            // assuming location item is declared in DashboardItems as location
                intent = new Intent(Dashboard.this, UserLocation.class);
              }else{
                // put the 3rd item
              }
            // so it is triggered when you click an item
            startActivity(intent); // then you start it this way
            // that's all you need to do
        }
    });
}