ListView是UI库在大多数现代操作系统中提供的图形屏幕控件或窗口小部件,用于以列表形式显示项目。
我希望应用程序中的所有列表看起来完全相同,并且不想一遍又一遍地重新指定所有这些设置。我收到以下错误:在范围内找不到类型“配置”。我
如何在 flutter 中将类别列表添加到我的正文中?拜托,我是新来的
导入'包:flutter/material.dart'; 导入'包:hlibrary/main.dart'; 类面板扩展StatelessWidget { const Panel({Key? key}); @覆盖 小部件构建(BuildContext上下文){ 返回斯塔...
我想序列化我的查询集,并且我希望它采用此视图输出的格式: 类 JSONListView(ListView): 查询集 = Users.objects.all() def get(自身, 请求, *args, **kwargs):
为什么flutter的listview会转到同一Column中的textfiled的背景?
我将 TextField 和 ListView 放在 Column 中。当我向下滚动 ListView 时,ListView 将转到上方 TextField 的背景。如何解决这个问题呢? 我把ListView放在Expanded中,但是...
我的代码: ... 我的代码: <div data-role="content" id="merlin"> <div data-role="collapsible-set" data-theme="c" data-content-theme="d" data-inset="false"> <div data-role="collapsible"> <h2>That is a serious problem and I don't know how to solve it</h2> <ul data-role="listview"> <li>some content</li> </ul> </div> </div> </div> 输出: http://s14.directupload.net/images/140117/6foqxhjr.png 我想要的: 空白(或者说自动换行?)来阅读整个标题 我尝试过的: #merlin { white-space: normal; } 或 .ui-page .ui-content .ui-listview .ui-li-desc { white-space : normal; } 您需要定位类 ui-btn-text 并尝试此选择器: #merlin .ui-btn-text { white-space: normal; } 检查这个演示小提琴
使用powershell windows窗体创建一个带有多行标题的列表视图
我需要一个可以支持包含两行文本的列标题的列表视图。 我花了很多时间尝试使用 add_DrawColumnHeader 来创建第二行。 我在 c# 中创建它没有任何问题...
SharePoint Online JSON 格式适用于编辑表单,但不适用于列表视图
我有一个 SharePoint Online 列表,前几天运行良好,并关联了一些条件 JSON。它根据另一个字段更改背景颜色。我可以看到背景颜色是
Carousel Slider 项目中的 Flutter 动态列表
我有来自服务器的动态列表图像,我想将它们推送到轮播滑块中。 但是当我将它们添加到项目中并运行时,出现此错误: 类“String”没有实例方法“m...
带有中心键和多个条子的CustomScrollView:向不同方向展开小部件
我正在构建一个应用程序,您可以在其中浏览各种产品。每个产品还有一个产品详细信息页面。在该产品详细信息页面上,我想显示产品图片、价格、产品描述...
如何将Android.database.sqlite表数据加载到spinner中? (表有数据但未加载)
我正在使用以下代码将 sqlite 数据库表信息加载到微调器中。我通过保存数据活动来保存表中的数据,并尝试快速获取保存的数据...
MAUI Group ListView 展开和折叠标题项处于隐藏状态时出现问题
展开和折叠标题项处于隐藏状态时的 Group ListView 问题 当 Listview 展开时,标题项将处于隐藏状态,只能看到空白空间 滚动时...
我正在使用一些功能制作一个 Kotlin 项目 代码的作用如下 - 从微调器中获取用户名 从单选按钮中获取预算标题 它导航到另一个
一个领域的初学者,我有这段代码可以工作,但是在单击的情况下出现错误 当我单击任何卡片时,所有卡片也会打开。我想打开一张只需点击的卡片 导入...
我对 ListView+images 有两个问题。 我从包含所有必要信息的 xml 文件中获取列表的值。 我需要设置一个列表视图。每行都应包含一个图标和一个山雀...
我正在使用一些功能制作一个 Kotlin 项目 代码的作用如下 - 从微调器中获取用户名 从单选按钮中获取预算标题 它导航到另一个
如何使用 Kotlin 的自定义适配器为列表视图设置OnItemClickListener
我在我的 Android 应用程序上使用列表视图的自定义适配器。我不知道如何设置项目点击的监听器。我的应用程序使用 Kotlin。 这是我的适配器布局。 我在我的 Android 应用程序上使用列表视图的自定义适配器。我不知道如何设置项目点击的监听器。我在我的应用程序中使用 Kotlin。 这是我的适配器布局。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <CheckBox android:id="@+id/cbx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> <TextView android:id="@+id/txtNameNote" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:layout_toRightOf="@+id/cbx" /> <TextView android:id="@+id/txtPercent" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="TextView" android:layout_toRightOf="@+id/cbx" android:layout_below="@+id/txtNameNote" /> </RelativeLayout> </LinearLayout> 这是我的适配器代码 class CustomAdapter(internal var context: Context, resource: Int, internal var listNote: ArrayList<Note>) : ArrayAdapter<Note>(context, resource, listNote) { override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { var convertView = convertView // TODO Auto-generated method stub val inflater = (context as Activity).layoutInflater convertView = inflater.inflate(R.layout.rowlistitem, parent, false) val name = convertView!!.findViewById<View>(R.id.txtNameNote) as TextView val percent = convertView.findViewById<View>(R.id.txtPercent) as TextView val cb = convertView.findViewById<View>(R.id.cbx) as CheckBox name.text = listNote[position].name percent.text = "Percent: " + listNote[position].percent + "%" if (listNote[position].status == NoteStatus.Active.value) cb.isChecked = false else{ name.paintFlags = (name.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG) cb.isChecked = true } } } return convertView } } 有人可以帮我吗? Kotlin 中正确的方法是创建回调。然后,您在适配器中创建一个点击侦听器并将结果转发到您的回调。 class CustomAdapter( internal var context: Context, resource: Int, internal var listNote: ArrayList<Note>, val callback: (Note) -> Unit) : ArrayAdapter<Note>(context, resource, listNote) { override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { // .. do your bindings whatever convertView.yourRootLayoutElement.setOnClickListener{ if (callback != null) callback(listNote[position]) } return convertView } } 在您创建适配器的视图中 CustomAdapter(...., { info { "Clicked $it" } }) 我没有测试过,因为我不使用ListView。我推荐你使用RecyclerView。 ListView 已被弃用,并且出于多种原因不推荐使用。请阅读此处的一些原因。 编辑:绝对没有理由使用ListView而不是RecyclerView。即使它有效,你也不应该使用它。了解 RecyclerView,因为 ListView 应该不再使用。 以下代码用于使用列表视图制作测验应用程序 自定义适配器代码 package com.example.myapplication import android.content.Context import android.content.Intent import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.provider.MediaStore.Audio.Radio import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter import android.widget.Button import android.widget.ListView import android.widget.RadioButton import android.widget.RadioGroup import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.constraintlayout.widget.ConstraintLayout import org.w3c.dom.Text import java.lang.Exception data class QuizOption( val optionText: String, val isCorrect: Boolean ) data class Question( val questionText: String, val options: List<QuizOption>, ) class QuestionAdapter(private val context: Context, public val questions: List<Question>) : BaseAdapter() { override fun getCount(): Int { return questions.size } override fun getItem(p0: Int): Any { return questions[p0] } override fun getItemId(p0: Int): Long { return p0.toLong() } override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View { val view = p1 ?: LayoutInflater.from(context).inflate(R.layout.quiz_list, p2, false) val question = questions[p0] val questionText = view.findViewById<TextView>(R.id.question) val option1RadioButton = view.findViewById<RadioButton>(R.id.opt1); val option2RadioButton = view.findViewById<RadioButton>(R.id.opt2); val option3RadioButton = view.findViewById<RadioButton>(R.id.opt3); val option4RadioButton = view.findViewById<RadioButton>(R.id.opt4); questionText.text = question.questionText option1RadioButton.text = question.options[0].optionText option2RadioButton.text = question.options[1].optionText option3RadioButton.text = question.options[2].optionText option4RadioButton.text = question.options[3].optionText option1RadioButton.tag = question.options[0].isCorrect option2RadioButton.tag = question.options[1].isCorrect option3RadioButton.tag = question.options[2].isCorrect option4RadioButton.tag = question.options[3].isCorrect return view } } 其余主要代码 class QuizPage : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_quiz_page) val name = intent.getStringExtra("Name") val nameView = findViewById<TextView>(R.id.nameView) nameView.text = "Hello $name!" val questions = listOf<Question>(Question("Question 1", listOf(QuizOption("Option 1", true),QuizOption("Option 2", false),QuizOption("Option 3", false),QuizOption("Option 4", false))),Question("Question 2", listOf(QuizOption("Option 1", false),QuizOption("Option 2", true),QuizOption("Option 3", false),QuizOption("Option 4", false))),Question("Question 3", listOf(QuizOption("Option 1", false),QuizOption("Option 2", false),QuizOption("Option 3", true),QuizOption("Option 4", false)))) val listView = findViewById<ListView>(R.id.listView) val adapter = QuestionAdapter(this, questions) listView.adapter = adapter val button = findViewById<Button>(R.id.button2) button.setOnClickListener{ val alertDialogBuilder = AlertDialog.Builder(this) alertDialogBuilder.setTitle("Confirm Submission!") alertDialogBuilder.setMessage("Are you sure that you want to submit your answers?") alertDialogBuilder.setPositiveButton("Yes") { _, _, -> var totalScore = 0 for (i in 0 until 4) { val radioGroup = listView.getChildAt(i)?.findViewById<RadioGroup>(R.id.radioGroup) if (radioGroup != null) { val selectedRadioButtonId = radioGroup.checkedRadioButtonId if (selectedRadioButtonId != -1) { val radioButton = radioGroup.findViewById<RadioButton>(selectedRadioButtonId) val isCorrect = radioButton.tag as Boolean Toast.makeText(this, "question $i correct ${radioButton.tag}", Toast.LENGTH_SHORT).show() if(isCorrect){ totalScore += 10 } else{ totalScore -=5 } } } } if(totalScore>10){ val cL = findViewById<ConstraintLayout>(R.id.cL) cL.setBackgroundColor(Color.parseColor("#00FF00")) } // button.visibility = View.GONE Toast.makeText(this, "Total Score: $totalScore", Toast.LENGTH_LONG).show() val intent = Intent(this, alarm::class.java) intent.putExtra("Score", totalScore) startActivity(intent) } alertDialogBuilder.setNegativeButton("Cancel"){_, _, -> Toast.makeText(this, "No", Toast.LENGTH_LONG).show() } alertDialogBuilder.show(); } } }
我是 SwiftUI 新手,我正在尝试弄清楚如何设置保持不变的 TabView 的默认页面 我的 TabView 嵌套在 ListView 中,并且我设置了 @State private var Selection = 1,这...
MAUI:Listview 中的 UI 对齐问题,网格有 3 列
我在 Listview 中遇到 UI 对齐问题,其中 Grid 有 3 列,如下图所示: 我的列表视图代码: 我在 Listview 中遇到 UI 对齐问题,网格有 3 列,如下图所示: 我的列表查看代码: <ListView x:Name="MyCustomers" ItemsSource="{Binding AllItems,Mode=TwoWay}" RowHeight="{OnIdiom Phone=80, Tablet=110, Desktop=80}" IsPullToRefreshEnabled="True" HasUnevenRows="True" CachingStrategy="RecycleElement" RefreshCommand="{Binding RefreshCommand}" IsRefreshing="{Binding IsRefreshing}"> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <ViewCell.View> <Grid HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand"> <Grid.ColumnDefinitions> <ColumnDefinition Width="2*" /> <ColumnDefinition Width="6*" /> <ColumnDefinition Width="2*" /> </Grid.ColumnDefinitions> <Grid Grid.Column="0" HorizontalOptions="Start"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="12.25*" /> </Grid.ColumnDefinitions> <Grid VerticalOptions="CenterAndExpand" HorizontalOptions="Start" Grid.Column="1"> <Image Source="ic_profilebg_xx.png" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" x:Name="imagebg" Aspect="AspectFit"> <Image.HeightRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>60</OnIdiom.Phone> <OnIdiom.Tablet>90</OnIdiom.Tablet> <OnIdiom.Desktop>60</OnIdiom.Desktop> </OnIdiom> </Image.HeightRequest> <Image.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>60</OnIdiom.Phone> <OnIdiom.Tablet>90</OnIdiom.Tablet> <OnIdiom.Desktop>60</OnIdiom.Desktop> </OnIdiom> </Image.WidthRequest> </Image> <Label Text="{Binding user.fullname,Converter={StaticResource profilenameConverter}}" Style="{StaticResource InitalLabelStyle}"/> </Grid> </Grid> <StackLayout Grid.Column="1" Margin="3,0,0,0" HorizontalOptions="Start" VerticalOptions="CenterAndExpand" Orientation="Vertical"> <Label Text="{Binding user.fullname, Converter={StaticResource nameConverter}}" FontFamily="Bold" VerticalTextAlignment="Center" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" HorizontalTextAlignment="Start" TextColor="#676767" IsVisible="{Binding user.fullname, Converter={StaticResource nullCheckConverter}}"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>15</OnIdiom.Phone> <OnIdiom.Tablet>20</OnIdiom.Tablet> <OnIdiom.Desktop>15</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <Label Text="{Binding user.email}" VerticalOptions="CenterAndExpand" TextColor="#676767" VerticalTextAlignment="Center" HorizontalOptions="Start" HorizontalTextAlignment="Start" IsVisible="{Binding user.email , Converter={StaticResource nullCheckConverter}}"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>12</OnIdiom.Phone> <OnIdiom.Tablet>18</OnIdiom.Tablet> <OnIdiom.Desktop>12</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <Label Text="{Binding phoneNumber, Converter={StaticResource phoneNumberFormatConverter}}" VerticalTextAlignment="Center" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" HorizontalTextAlignment="Start" TextColor="#676767" IsVisible="{Binding isPhoneEmpty}"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>12</OnIdiom.Phone> <OnIdiom.Tablet>18</OnIdiom.Tablet> <OnIdiom.Desktop>12</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <!--<StackLayout.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>200</OnIdiom.Phone> <OnIdiom.Tablet>300</OnIdiom.Tablet> <OnIdiom.Desktop>200</OnIdiom.Desktop> </OnIdiom> </StackLayout.WidthRequest>--> </StackLayout> <StackLayout Grid.Column="2" Orientation="Vertical" VerticalOptions="CenterAndExpand" HorizontalOptions="EndAndExpand"> <StackLayout Margin="0,0,0,5" HorizontalOptions="FillAndExpand" BackgroundColor="#5abcd7"> <Label Text="{Binding pointsToVisualize}" FontFamily="Bold" HorizontalOptions="CenterAndExpand" HorizontalTextAlignment="Center" TextColor="White"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>15</OnIdiom.Phone> <OnIdiom.Tablet>20</OnIdiom.Tablet> <OnIdiom.Desktop>15</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <!--<StackLayout.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>80</OnIdiom.Phone> <OnIdiom.Tablet>120</OnIdiom.Tablet> <OnIdiom.Desktop>80</OnIdiom.Desktop> </OnIdiom> </StackLayout.WidthRequest>--> <StackLayout.Padding> <OnIdiom x:TypeArguments="Thickness"> <OnIdiom.Phone>3</OnIdiom.Phone> <OnIdiom.Tablet>6</OnIdiom.Tablet> <OnIdiom.Desktop>3</OnIdiom.Desktop> </OnIdiom> </StackLayout.Padding> </StackLayout> <StackLayout Orientation="Horizontal"> <Image VerticalOptions="Center" Source="ic_action_time.png"> <Image.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>13</OnIdiom.Phone> <OnIdiom.Tablet>20</OnIdiom.Tablet> <OnIdiom.Desktop>13</OnIdiom.Desktop> </OnIdiom> </Image.WidthRequest> <Image.HeightRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>13</OnIdiom.Phone> <OnIdiom.Tablet>20</OnIdiom.Tablet> <OnIdiom.Desktop>13</OnIdiom.Desktop> </OnIdiom> </Image.HeightRequest> </Image> <Label Margin="2,0,0,0" Text="{Binding user.updatedTime, Converter={StaticResource cnvDateTimeConverter}}" TextColor="#5abcd7" HorizontalOptions="FillAndExpand" VerticalOptions="Center"> <Label.FontSize> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>10</OnIdiom.Phone> <OnIdiom.Tablet>15</OnIdiom.Tablet> <OnIdiom.Desktop>10</OnIdiom.Desktop> </OnIdiom> </Label.FontSize> </Label> <StackLayout.Margin> <OnIdiom x:TypeArguments="Thickness"> <OnIdiom.Phone>3</OnIdiom.Phone> <OnIdiom.Tablet>6</OnIdiom.Tablet> <OnIdiom.Desktop>3</OnIdiom.Desktop> </OnIdiom> </StackLayout.Margin> <!--<StackLayout.WidthRequest> <OnIdiom x:TypeArguments="x:Double"> <OnIdiom.Phone>115</OnIdiom.Phone> <OnIdiom.Tablet>300</OnIdiom.Tablet> <OnIdiom.Desktop>50</OnIdiom.Desktop> </OnIdiom> </StackLayout.WidthRequest>--> </StackLayout> </StackLayout> <Grid.Margin> <OnIdiom x:TypeArguments="Thickness"> <OnIdiom.Phone>3</OnIdiom.Phone> <OnIdiom.Tablet>6</OnIdiom.Tablet> <OnIdiom.Desktop>3</OnIdiom.Desktop> </OnIdiom> </Grid.Margin> <Grid.Padding> <OnIdiom x:TypeArguments="Thickness"> <OnIdiom.Phone>3</OnIdiom.Phone> <OnIdiom.Tablet>6</OnIdiom.Tablet> <OnIdiom.Desktop>3</OnIdiom.Desktop> </OnIdiom> </Grid.Padding> </Grid> </ViewCell.View> </ViewCell> </DataTemplate> </ListView.ItemTemplate> <ListView.Footer> <Label/> </ListView.Footer> </ListView> 我尝试在演示项目中重现此问题,并且在演示中工作正常。演示项目已上传此处。 使用相同的代码,UI在演示项目中没有问题,但在我的实际项目中出现问题,可能是什么原因? 注意:如果我取消第二列的 StackLayout.WidthRequest 注释,UI 对齐问题就会得到解决。 我已经复制了你的项目并重现了你的问题。 使用相同的代码,UI在演示项目中没有问题,但在我的实际项目中出现问题,可能是什么原因? 这是因为演示项目中列表视图的所有项目都是相同的。但是你的真实项目每个项目都有不同的数据(堆栈布局不同)。 如果我取消第二列的 StackLayout.WidthRequest 注释,UI 对齐问题就会得到解决。 这是因为您使每个项目的宽度相同。我发现 StackLayout 中的 HorizontalOptions="Start" 不适用于您的项目(目标 .net 7.0)。但我在 .net 8.0 中测试了相同的代码,并且 HorizontalOptions="Start" 运行良好。 UI 对齐问题消失了。 因此您可以尝试将项目升级到目标网络 8.0 来解决此问题。并且您可以在存储库上报告此问题。