Android 取决于列表视图中选定项的条件按钮操作

Android 取决于列表视图中选定项的条件按钮操作,android,listview,if-statement,kotlin,Android,Listview,If Statement,Kotlin,我试图在按下按钮时显示消息,但列表1中未选择任何内容。如果选择了某个项目,我希望它将listView布局可见性设置为gone,并将网站布局可见性设置为visible 当我按下按钮时,无论发生什么,我都会听到祝酒词 代码如下: 我的按钮: button1.setOnClickListener { var selectedObj = list1.getSelectedItem() if (selectedObj == null) {

我试图在按下按钮时显示消息,但列表1中未选择任何内容。如果选择了某个项目,我希望它将listView布局可见性设置为gone,并将网站布局可见性设置为visible

当我按下按钮时,无论发生什么,我都会听到祝酒词

代码如下:

我的按钮:

        button1.setOnClickListener {
            var selectedObj = list1.getSelectedItem()
            if (selectedObj == null) {
                toast("You need to choose an item form the list first")
            }
            else {
                val builder = AlertDialog.Builder(this)
                builder.setTitle("Warning")
                builder.setMessage("This service requires data")
                builder.setPositiveButton("Yes", { dialogInterface: DialogInterface, i: Int ->
                    ListView.visibility = View.GONE
                    website.visibility = View.VISIBLE
                })
                builder.setNegativeButton("No", { dialogInterface: DialogInterface, i: Int -> })
                builder.show()
            }

        }
这是我的列表视图:

 <ListView
    android:id="@+id/list1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:choiceMode="singleChoice"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:listSelector="@android:color/darker_gray"
    android:textSize="10dp"

</ListView>
Tyvm提前为您提供支持


注意。

设置选择模式时,ListView不存储selectedItem位置。它存储选中的项目位置

看看这个

class MainActivity : AppCompatActivity() {
private lateinit var listView:ListView
internal lateinit var adapteranimals: ArrayAdapter<String>
val nameofanimals = arrayOf("cat","dog","parrot")
private lateinit var btn1:Button
private lateinit var myobject:String

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)


    listView = findViewById<ListView>(R.id.list1)
    btn1 = findViewById<Button>(R.id.btn1)
    adapteranimals = ArrayAdapter(
            this@MainActivity,
            R.layout.list1layout,
            nameofanimals)
    listView.adapter = adapteranimals
    btn1.setOnClickListener {
        val pos = listView.getCheckedItemPosition()
        myobject  = listView.getAdapter().getItem(pos) as String
        Log.d("Selected item",myobject);
    }

}
class MainActivity:AppCompatActivity(){
私有lateinit变量listView:listView
内部lateinit变量adapteranimals:ArrayAdapter
val nameofamals=arrayOf(“猫”、“狗”、“鹦鹉”)
私有lateinit变量btn1:按钮
私有lateinit var myobject:String
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
listView=findViewById(R.id.list1)
btn1=findViewById(R.id.btn1)
adapteranimals=ArrayAdapter(
this@MainActivity,
R.布局。列表1布局,
(动物名称)
listView.adapter=adapteranimals
btn1.setOnClickListener{
val pos=listView.getCheckEditePosition()
myobject=listView.getAdapter().getItem(pos)作为字符串
Log.d(“所选项目”,myobject);
}
}

}

您试图从列表中访问变量,并且希望列表存储该变量的位置。但不幸的是,列表并没有保存单击项目的位置。使用此代码,单击的项目将就位

 ListView list = (ListView) findViewById(R.id.listview);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         // Object listItem = list.getItemAtPosition(position);
            ListView.visibility = View.GONE
            website.visibility = View.VISIBLE
            //you can get the list item clicked in position variable


       } 
    });
ListView list=(ListView)findViewById(R.id.ListView);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//对象listItem=list.getItemAtPosition(位置);
ListView.visibility=View.GONE
website.visibility=View.VISIBLE
//您可以在位置变量中单击列表项
} 
});

Hi and tyvm,我应该在我的代码中添加这些行,我正在Android中与Kotlin一起工作。在你的按钮点击手柄中添加这些我完全迷路了,因为我似乎无法导入所需内容,因为我不是在java中工作,但在Kotlin中,我收到了未解决的参考消息
class MainActivity : AppCompatActivity() {
private lateinit var listView:ListView
internal lateinit var adapteranimals: ArrayAdapter<String>
val nameofanimals = arrayOf("cat","dog","parrot")
private lateinit var btn1:Button
private lateinit var myobject:String

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)


    listView = findViewById<ListView>(R.id.list1)
    btn1 = findViewById<Button>(R.id.btn1)
    adapteranimals = ArrayAdapter(
            this@MainActivity,
            R.layout.list1layout,
            nameofanimals)
    listView.adapter = adapteranimals
    btn1.setOnClickListener {
        val pos = listView.getCheckedItemPosition()
        myobject  = listView.getAdapter().getItem(pos) as String
        Log.d("Selected item",myobject);
    }

}
 ListView list = (ListView) findViewById(R.id.listview);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         // Object listItem = list.getItemAtPosition(position);
            ListView.visibility = View.GONE
            website.visibility = View.VISIBLE
            //you can get the list item clicked in position variable


       } 
    });