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