C# 查找列表中某个字符串的下一个出现位置

标签 c# android list listview

我试图在动态创建的列表中查找字符串的下一个匹配项。首先,我使用将文本保存到 txt 文件的按钮创建列表,然后用“,”将文件划分到列表中,然后通过单击列表中的项目,更新列表旁边的 TextView 项目。

var it = lstv.GetItemAtPosition(e.Position); 给出开始搜索下一个字符串的位置。下一个字符串是两种可能性之一。

列表创建

string content;
using (var streamReader = new StreamReader(filename))
{
content = streamReader.ReadToEnd();
}
content = content.TrimEnd(',');
char[] delimiterChars = { ',' }; 
data = content.Split(delimiterChars);
var myAdapter = new ArrayAdapter(this, Resource.Layout.TextViewItem, data);
lstv.Adapter = myAdapter;

我发现的建议仅获取第一个或最后一个出现的值,但我有多次出现的值,并且我需要从单击的位置获取下一个出现的值

编辑: 应该提到在起始位置和我想要得到的字符串之间有 X 个项目。

编辑2:

列表是这样的:

String 1 or String 2 
String x
String x
String x
String x
String 1 or String 2
String x
String X
String 1 or String 2

我想要获取的下一个字符串 1 或 2 之间的字符串 x 的数量有所不同。当用户单击“字符串 1/2”时,程序需要查找值为“字符串 1”或“字符串 2”的下一个位置。

哦,是的,它给出了一个项目。当我获得下一个所需的字符串时,我可以获得该项目的位置以及下一步需要做什么。抱歉,如果我有点太不清楚了。

编辑3:

OnListItemClick方法

protected void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e)
    {
        var it = lstv.GetItemAtPosition(e.Position);
        View v = (sender as View);
        int pos = lstv.GetPositionForView(v);
        if (it.ToString().Equals("String1") || it.ToString().Equals("String2")
        {
                /*while (!it.ToString().Equals("String1") || !it.ToString().Equals("String2"))
                {
                    it = lstv.GetItemAtPosition(e.Position + 1);
                    lstv.GetItemAtPosition(e.Position);
                    //lstv.SetSelection(e.Position);
                }*/

                //it = lstv.GetItemAtPosition(e.Position - 1);
                int itt = lstv.SelectedItemPosition;
                txtv.Text = it.ToString();
                txtv2.Text = pos.ToString();
                txtv3.Text = itt.ToString();                
        }
        else
        {
        // Some code here
        }
    }

我尝试使用 View v = (sender as View); 获取位置,但无论我在列表中单击哪个项目,它总是将位置返回为 -1。

在列表中,如果我单击第二次出现的字符串 1,程序应该找到下一个项目,即字符串 1 或字符串 2。找到后,应该给出该项目的位置。

如果我只搜索字符串 1 或 2,则 while 循环有效,但如果我搜索两者,则 while 循环无效。我可能做错了很多事情,但如果我能在寻找什么方面得到一些帮助,我将不胜感激。

最佳答案

一个 while 循环应该可以解决这个问题......

关于C# 查找列表中某个字符串的下一个出现位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37834221/

相关文章:

c# - 跨几个变量的引用类型分配

c# - WCF REST 服务中返回大文件的响应时间问题

Android:记住我不工作

c# - 比较两个列表中的项目并返回不匹配的项目

Python 元组列表去重

c# - 使用从一个 Controller 到另一个 Controller 的 DbContext 变量

c# - C# 的随机数生成器是如何工作的?

javascript - 如何在 Firefox for Android 上为视频创建缩略图

Android - 在 data/data/pkg/files 目录中创建一个文件夹

jQuery检查是否没有 sibling 有类(class)