当前位置: 首页 > 知识库问答 >
问题:

我正在使用kotlin在android中使用芯片视图。我需要实现clickk功能

武峻熙
2023-03-14

就像按钮一样,我在每个芯片视图上使用了setOnClickListener。但它不起作用。如果这很容易回答,我很抱歉,但我是Android新手。所以请帮帮我。我的xml文件看起来很好。这是片段代码。

覆盖CreateView上的乐趣(膨胀器:LayoutInflater,容器:ViewGroup?,保存的InstanceState:Bundle?):视图?{

     val view = inflater.inflate(R.layout.fragment_main, container, false)
     setHasOptionsMenu(true)
     byName = view.findViewById(R.id.byName)
     byPrice = view.findViewById(R.id.byPrice) if(Connection().checkConnectivity(activity as Context)) {

        no_net.visibility = View.GONE
        appbar.visibility = View.VISIBLE
        val q = Volley.newRequestQueue(activity as Context)
        val url = "http://13.235.250.119/v2/restaurants/fetch_result/"
        try{
            progress_bar.visibility = View.VISIBLE
            val jsonreq = object : JsonObjectRequest(
                Request.Method.GET,url,null,
                Response.Listener {
                    if(it.getJSONObject("data").getBoolean("success")){
                        list = arrayListOf<DataList>()
                        val data = it.getJSONObject("data").getJSONArray("data")
                        for(i in 0 until data.length()){
                            list.add(
                                DataList(
                                    data.getJSONObject(i).getString("id"),
                                    data.getJSONObject(i).getString("name"),
                                    data.getJSONObject(i).getString("rating"),
                                    data.getJSONObject(i).getString("cost_for_one"),
                                    data.getJSONObject(i).getString("image_url")
                                )
                            )
                        }
                        recl_view.layoutManager = LinearLayoutManager(activity)
                        recl_view.adapter = MainAdapter(activity ?: return@Listener,list)
                        progress_bar.visibility = View.GONE
                    }
                },
                Response.ErrorListener {
                    appbar.visibility = View.GONE
                    progress_bar.visibility = View.GONE
                    Toast.makeText(activity as Context,"Please Try Again Later.", Toast.LENGTH_SHORT).show()
                }){
                override fun getHeaders(): MutableMap<String, String> {
                    val headers = HashMap<String, String>()
                    headers["Content-type"] = "application/json"
                    headers["token"] = "c3acf1e14c21f9"
                    return headers
                }
            }
            q.add(jsonreq)
        }catch (e: Exception){
            appbar.visibility = View.GONE
            progress_bar.visibility = View.GONE
            Toast.makeText(activity as Context,"Please Try Again Later.", Toast.LENGTH_SHORT).show()
        }
    }
    else{
        appbar.visibility = View.GONE
        Toast.makeText(activity as Context,"Please Check your Internet Connection", Toast.LENGTH_SHORT).show()
        no_net.visibility = View.VISIBLE
    }

    var ratingCompName = Comparator<DataList> { item1, item2 ->
        if (item1.name.compareTo(item2.name, true) == 0) {
            item1.rating.compareTo(item2.rating, true)

        } else {

            item1.name.compareTo(item2.name, true)

        }

    }
    var ratingComprating = Comparator<DataList> { item1, item2 ->
        if (item1.rating.compareTo(item2.rating, true) == 0) {
            item1.name.compareTo(item2.name, true)

        } else {

            item1.rating.compareTo(item2.rating, true)

        }

    }
    var ratingCompPrice = Comparator<DataList> { item1, item2 ->
        if (item1.cost_for_one.compareTo(item2.cost_for_one, true) == 0) {
            item1.rating.compareTo(item2.rating, true)

        } else {

            item1.cost_for_one.compareTo(item2.cost_for_one, true)

        }

    }

    byName.setOnClickListener {
        Collections.sort(list, ratingCompName)
        recl_view.adapter = MainAdapter(activity as Context, list)

        (recl_view.adapter as MainAdapter).notifyDataSetChanged()

    }
    byRating.setOnClickListener {
        Collections.sort(list, ratingComprating)
        recl_view.adapter = MainAdapter(activity as Context, list)

        (recl_view.adapter as MainAdapter).notifyDataSetChanged()



    }

共有1个答案

樊令秋
2023-03-14

尝试使用以下代码,它将对您有所帮助。

      //activity xml
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<com.google.android.material.chip.Chip
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="UserName"
    android:id="@+id/userNameChip"/></LinearLayout>


 //Activity code
  class TestActivity : AppCompatActivity() {
private lateinit var userNameChip: Chip
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_test)
    userNameChip = findViewById(R.id.userNameChip)
    userNameChip.setOnClickListener { view ->
        val defaultUser: String = (view as Chip).text.toString()
        Toast.makeText(this,defaultUser,Toast.LENGTH_LONG).show()
    }
}
 }
 类似资料:
  • 问题内容: 我一直在研究,发现从2.1开始就可以使用实体图。 但是我还不了解实体图的优点。 我知道使用实体图的优点之一是我们只能在整个实体中指定要获取的数据,但是如果我们要整个实体,还有其他理由使用实体图吗?还是仅在要检索部分数据时才应使用实体图? 当我们使用实体图时,它还有其他目的或优点,我想知道。 问题答案: 在Jpa中,休眠与关联关系一直是性能的问题。 一次又一次地在事务中延迟加载关联会导致

  • 问题内容: 我有一个使用此函数运行线程的代码示例。我们为什么以及何时需要使用它? 编辑 怎么样来使用类,什么是和? 问题答案: 当您要从非UI线程更新UI时必须使用。例如-如果您想从后台线程更新UI。您也可以将其用于同一件事。 从文档- 在UI线程上运行指定的操作。如果当前线程是UI线程,则立即执行该操作。如果当前线程不是UI线程,则将操作发布到UI线程的事件队列。 句法 - 更新- 如果您要执行

  • 但代码不起作用。我是否需要将launchActivity定义为一个规则,或者是否存在我需要在Gradle中导入的库? 这些是我已经有的进口品

  • 我需要一个明确的解释这一点,即使我读了这个关于差异的链接,但没有明确的清晰。那么有没有人可以简单地用代码向我解释一下呢?

  • 我在互联网上找到了例子,但这并没有给我充分的理解。使用WebFlux时的标准CRUD。 路由器: 处理程序: 我是对的还是这个说法错了?

  • 我有一个抽屉布局片段(在主活动中),它显示了一个可扩展的列表,当我点击扩展项目的子项时,会出现一个弹出窗口。这个具有自定义布局的弹出窗口包含文本视图、列表视图和2个按钮。 我给列表视图提供了id:,并在onCreateView函数中从视图组返回空值,如下所示: 并使类扩展的片段不是列表片段 我执行了前面的3个步骤,以避免出现“Content has view with id attribute'a