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 Listview-McClick事件_Java_Android_Listview_Events_Adapter - Fatal编程技术网

Java Listview-McClick事件

Java Listview-McClick事件,java,android,listview,events,adapter,Java,Android,Listview,Events,Adapter,我有以下代码,应该: listView = (ListView) findViewById(R.id.listview_github_entries); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i

我有以下代码,应该:

listView = (ListView) findViewById(R.id.listview_github_entries);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

         }
    });
listView=(listView)findViewById(R.id.listView\u github\u条目);
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
}
});
这是我加载到ListView中的内容:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_item"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dp"
    android:orientation="horizontal"
    android:clickable="true">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@mipmap/github_icon"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/github_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <TextView
            android:id="@+id/github_url"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>


</LinearLayout>

下面是适配器:

public class GithubEntryAdapter extends ArrayAdapter<GithubEntry>{

    public GithubEntryAdapter(Activity context, ArrayList<GithubEntry> githubEntries){
        super(context, 0, githubEntries);
    }

    public View getView(int position, View convertView, ViewGroup parent){
        View listItemView = convertView;
        if (listItemView == null){
            listItemView = LayoutInflater.from(getContext()).inflate(
                    R.layout.list_item, parent, false);
        }

        GithubEntry currentGithubEntry = getItem(position);
        TextView github_url = (TextView) listItemView.findViewById(R.id.github_url);
        github_url.setText(currentGithubEntry.getGithub_url());
        TextView github_name = (TextView) listItemView.findViewById(R.id.github_name);
        github_name.setText(currentGithubEntry.getGithub_name());
        return listItemView;

    }
}
公共类GithubEntryAdapter扩展了ArrayAdapter{
公共GithubEntryAdapter(活动上下文,ArrayList githubEntries){
超级(上下文,0,githubEntries);
}
公共视图getView(int位置、视图转换视图、视图组父视图){
View listItemView=convertView;
如果(listItemView==null){
listItemView=LayoutFlater.from(getContext()).inflate(
R.layout.list_项,父项,false);
}
GithubEntry currentGithubEntry=getItem(位置);
TextView github_url=(TextView)listItemView.findViewById(R.id.github_url);
github_url.setText(currentGithubEntry.getGithub_url());
TextView github_name=(TextView)listItemView.findViewById(R.id.github_name);
github_name.setText(currentGithubEntry.getGithub_name());
返回listItemView;
}
}

这对我不起作用。我不确定我应该把这个代码放在哪里。我可以把这个放在onCreate中吗?如果不是,我应该把它移到哪里?我对Android完全陌生,对Java也没有太多经验。

我想您应该在这里显示值列表。您应该在onCreate中编写它,因为onCreate是方法启动和运行的方法。所以,把它放在onCreate中。要获得更准确的答案,请解释一切。

我想您希望在此处显示值列表。您应该在onCreate中编写它,因为onCreate是方法启动和运行的方法。所以,把它放在onCreate中。要获得更准确的答案,请解释一切。

如果您的意思是OnItemClickListeneter不工作,那么您需要通过扩展来实现自定义适配器,以服务于您的自定义行,在自定义适配器中,您可以使用回调接口或在视图上实现侦听器。如果这意味着OnItemClickListeneter不工作,那么您需要通过扩展来实现自定义适配器以服务于自定义行,在自定义适配器中,您可以使用回调接口或在视图上实现侦听器。请参阅。

以下是我为您所做的

 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ListView;
 import android.widget.Toast;

 import java.util.ArrayList;

 public class MainActivity extends AppCompatActivity {

private ListView listView;

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

    listView = (ListView) findViewById(R.id.listview_github_entries);

    listView.setAdapter(new GithubEntryAdapter(MainActivity.this, getList()));


    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            TextView github_url_tv = view.findViewById(R.id.github_url); 
            String url_text= github_url_tv.getText().toString();

            Toast.makeText(MainActivity.this, url_text", Toast.LENGTH_LONG).show();
        }
    });
}


private ArrayList<GithubEntry> getList() {

    ArrayList<GithubEntry> githubEntries = new ArrayList<>();

    GithubEntry githubEntry = new GithubEntry();
    githubEntry.setGithub_name("Name");
    githubEntry.setGithub_url("url");


    GithubEntry githubEntry1 = new GithubEntry();
    githubEntry1.setGithub_name("Name");
    githubEntry1.setGithub_url("url");

    GithubEntry githubEntry2 = new GithubEntry();
    githubEntry2.setGithub_name("Name");
    githubEntry2.setGithub_url("url");

    githubEntries.add(githubEntry);
    githubEntries.add(githubEntry1);
    githubEntries.add(githubEntry2);

    return githubEntries;

}
}
下面是列表项

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="horizontal"
android:clickable="false">

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@mipmap/ic_launcher_round"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/github_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/github_url"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>


</LinearLayout>

这里是活动布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.kaimeramedia.githubentry.MainActivity">

<ListView
    android:id="@+id/listview_github_entries"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

以下是我为您所做的

 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ListView;
 import android.widget.Toast;

 import java.util.ArrayList;

 public class MainActivity extends AppCompatActivity {

private ListView listView;

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

    listView = (ListView) findViewById(R.id.listview_github_entries);

    listView.setAdapter(new GithubEntryAdapter(MainActivity.this, getList()));


    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            TextView github_url_tv = view.findViewById(R.id.github_url); 
            String url_text= github_url_tv.getText().toString();

            Toast.makeText(MainActivity.this, url_text", Toast.LENGTH_LONG).show();
        }
    });
}


private ArrayList<GithubEntry> getList() {

    ArrayList<GithubEntry> githubEntries = new ArrayList<>();

    GithubEntry githubEntry = new GithubEntry();
    githubEntry.setGithub_name("Name");
    githubEntry.setGithub_url("url");


    GithubEntry githubEntry1 = new GithubEntry();
    githubEntry1.setGithub_name("Name");
    githubEntry1.setGithub_url("url");

    GithubEntry githubEntry2 = new GithubEntry();
    githubEntry2.setGithub_name("Name");
    githubEntry2.setGithub_url("url");

    githubEntries.add(githubEntry);
    githubEntries.add(githubEntry1);
    githubEntries.add(githubEntry2);

    return githubEntries;

}
}
下面是列表项

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="horizontal"
android:clickable="false">

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@mipmap/ic_launcher_round"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/github_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/github_url"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>


</LinearLayout>

这里是活动布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.kaimeramedia.githubentry.MainActivity">

<ListView
    android:id="@+id/listview_github_entries"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>


onCreate很好。listview中的单元格视图是什么?您是否在listview单元格布局中使用按钮?该按钮是否有效?您确定id正确吗??试着在上面印些东西click@farisfaris是的,id是正确的。您可以向我们提供适配器代码@MattiamanceAncreate。listview中的单元格视图是什么?您是否在listview单元格布局中使用按钮?该按钮是否有效?您确定id正确吗??试着在上面印些东西click@farisfaris是,id正确。您能否向我们提供适配器代码@MattiamanceNathanks问题是我有clickable=True最后一个问题:如何从所选列表项中的github\u url获取文本?请检查列表视图的项上单击代码。我已经更新了答案。谢谢,问题是我有clickable=True最后一个问题:如何从所选列表项目的github\u url获取文本?请检查列表视图的项目点击代码。我已经更新了答案。